5-31 2,414 views
快速排序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#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; } |
堆排序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#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; } } } } |
版权属于: 我爱我家
转载时必须以链接形式注明原始出处及本声明。