源自挑战程序设计竞赛以及其他博客。
1.插入排序
1 void insertionsort(int* a,int n) 2 { 3 int v,j; 4 for(int i=1;i<n;++i) 5 { 6 v=a[i]; 7 j=i-1; 8 while(j>=0&&a[j]>v) 9 { 10 a[j+1]=a[j]; 11 j--; 12 } 13 a[j+1]=v; 14 trace(a,n); 15 } 16 }
2.冒泡排序
sw代表swap的次数。
1 int bubblesort(int *a,int n) 2 { 3 int sw=0; 4 bool flag=1; 5 for(int i=0;flag;i++) 6 { 7 flag=0; 8 for(int j=n-1;j>=i+1;j--) 9 { 10 if(a[j]<a[j-1]) 11 { 12 swap(a[j],a[j-1]); 13 flag=1; 14 sw++; 15 } 16 //trace(a,n); 17 } 18 } 19 return sw; 20 }
。。。