//选择 void sort1(int *a,int n){ for(int i=0;i<n-1;i++) for(int j=i;j<n;j++) if(a[i]>a[j]) sp(a[i],a[j]);}//冒泡 void sort2(int *a,int n){ for(int i=1;i<n-1;i++) for(int j=0;j<n-i;j++) if(a[j]>a[j+1]) sp(a[j],a[j+1]); }//插入 void sort(int* a,int n) { int temp,int item; for (int i=1;i<n;i++) { temp=a[i]; item=i-1; while (item>=0&&a[item]>temp) { a[item+1]=a[item]; item--; } a[item+1]=temp; }} //快速排序 void q(int *a,int left,int right){ int i=left; int j=right; int mid=a[(i+j)/2]; while(i<=j) { while((i<right)&&(a[i]>mid)) i++; while((j>left)&&(a[j]<mid)) j--; if(i<=j) { sp(a[i],a[j]); i++;j--; } } if(i<right) q(a,i,right); if(j>left) q(a,left,j); } void sort3(int *a, int n){ q(a,0,n-1); }//双向冒泡 绝对由于单向冒泡 原因很简单如果数组前面或者后面排好那么就很明显表现出差距void sort(int* a,int n) { int left=0,right=n-2,t;do {for (int i=left;i<=right;i++){if (a[i]<a[i+1]){swap(a[i],a[i+1]);t=i;}}right=t-1;for ( i=right;i>=left;i--){if(a[i]<a[i+1]){swap(a[i],a[i+1]);t=i;}}left=t+1;} while (left<=right);} const int arrsize=10;int main(){ int a[arrsize]; for(int i=0;i<arrsize;i++) cin>>a[i]; /////////////////////////////////在这行加入所对应的函数可以验证 for(int i=0;i<arrsize;i++) cout<<a[i]<<" "; system("pause"); return 0;}
http://asp.52725.com/lly880212/blog/item/855cd1eed98ce4e7ce1b3ec5.html