快速排序:
- #include <iostream>
- using namespace std;
- int n[5] = {4,3,1,5,2};
- void quickSort(int s, int t);
- int sort(int s, int t);
- int main()
- {
- quickSort(0,4);
- for (int i=0;i<5;i++) cout<<n[i];
- return 0;
- }
- void quickSort(int s, int t)
- {
- if(s>=t) return;
- int k = sort(s, t);
- quickSort(s,k-1);
- quickSort(k+1,t);
- return;
- }
- int sort(int s, int t)
- {
- int key = n[s];
- while(s<t)
- {
- while(n[t]>=key&&t>s) t--;
- n[s] = n[t];
- s++;
- while(n[s]<=key&&t>s) s++;
- n[t] = n[s];
- t--;
- }
- n[s] = key;
- return s;
- }
堆排序
- #include <iostream>
- using namespace std;
- int n[10] = {5,1,4,9,8,7,6,2,10,3};
- int l = 10;
- void creatHeap();
- void backHeap(int t);
- int main()
- {
- creatHeap();
- int i;
- for (i=1;i<=l;i++)
- {
- cout<<n[0];
- n[0] = n[l-i];
- backHeap(l-i);
- }
- return 0;
- }
- void creatHeap()
- {
- int i;
- for (i=l/2;i>=1;i--)
- {
- if (2*i==l||n[2*i-1]>n[2*i])
- {
- if (n[i-1]<n[2*i-1])
- {
- int temp = n[2*i-1];
- n[2*i-1] = n[i-1];
- n[i-1] = temp;
- }
- }
- else if (n[2*i-1]<=n[2*i])
- {
- if (n[i-1]<n[2*i])
- {
- int temp = n[2*i];
- n[2*i] = n[i-1];
- n[i-1] = temp;
- }
- }
- }
- }
- void backHeap(int t)
- {
- int i;
- for (i=1;i<=t/2;i++)
- {
- if (2*i==t||n[2*i-1]>n[2*i])
- {
- if (n[i-1]<n[2*i-1])
- {
- int temp = n[2*i-1];
- n[2*i-1] = n[i-1];
- n[i-1] = temp;
- }
- }
- else if (n[2*i-1]<=n[2*i])
- {
- if (n[i-1]<n[2*i])
- {
- int temp = n[2*i];
- n[2*i] = n[i-1];
- n[i-1] = temp;
- }
- }
- }
- }