1.插入排序 12345678910111213 void InsertSort(int r[],int n){ for(i=2;i<=n;i++) { r[0]=r[i]; for(j=i-1;r[0]<r[j];j--) { r[j+1]=r[j]; } r[j+1]=r[0]; }} 希尔排序 123456789101112131415 void ShellSort(int r[],int n){ for(d=n/2;d>=1;d=d/2) { for(i=d+1;i<=n;i++) { r[0]=r[i]; for(j=i-d;j>0&&r[0]<r[j];j=j-d) { r[j+d]=r[j]; } r[j+d]=r[0];} }} 2.交换排序 冒泡 12345678910111213141516 void BubbleSort(int r[],int n){ exchange=n; while(exchange!=0) { bound=exchange;exchange=0; for(j=1;j<bound;j++) { if(r[j]>r[j+1]) { r[j]<-->r[j+1]; exchange=j; } } }} 快速排序 123456789101112131415161718192021222324252627282930313233 int Partition(int r[],int first,int end){ i=first; j=end; while(i<j) { while(i<j&&r[i]<=r[j])j--; if(i<j) { r[i]<-->r[j]; i++; } while(i<j&&r[i]<=r[j])i++; if(i<j) { r[j]<-->r[i]; j--; } } return i;}void QuickSort(int r[],int first,int end){ if(first<end) { pivot=Partition(r,first,end); QuickSort(r,first,pivot-1); QuickSort(r,pivot+1,end); }} 3.选择排序 简单选择排序 12345678910111213 void SelectSort(int r[],int n){for(i=1;i<n;i++){index=i;for(j=i+1;j<=n;j++){if(r[j]<r[index])index=j;}if(index!=i)r[i]<-->r[index];}} 堆排序 1234567891011121314151617181920212223242526272829 void Sift(int r[],int k,int m){ i=k; j=2*i; while(j<=m) { if(j<m&&r[j]<r[j+1])j++; if(r[i]>r[j])break; else{ r[i]<-->r[j]; i=j;j=2*i; } }}void HeapSort(int r[],int n){for(i=n/2;i>=1;i--) { Sift(r,i,n); } for(i=1;i<n;i++) { r[1]<-->r[n-i+1]; Sift(r,1,n-i); }} 赞微海报分享
近期评论