//希尔排序 #include <iostream> #include <stdio.h> void ShellSort( int* data, int left, int right){ int len = right-left +1; int d =len; while (d>1){ d =(d+1)/2; for(int i =left; i<right+1-d;i++){ if(data[i+d]<data[i]){ int tmp = data[i+d]; data[i+d] = data[i]; data[i] =tmp; } } } } void ShellSort2( int *data, int len){ int d =len; while (d>1){ d =(d+1)/2; for(int i =0; i<len-d;i++){ if(data[i+d]<data[i]){ int tmp = data[i+d]; data[i+d] = data[i]; data[i] =tmp; } } for( int i=0; i<10;i++) printf("%5d", data[i]); printf("\n"); } } int main( ) { int list[10]; int n=9; int m=0; printf(" Input 10 number: "); for(int i=1; i<10;i++) scanf("%d",&list[i]); printf("\n"); ShellSort2(list,10); //ShellSort(list,0,9); printf("\n"); for(int i=0; i<10;i++) printf("%5d",list[i]); printf("\n"); }
//冒泡排序 #include <iostream> #include <stdio.h> void BubbleSort( int *list) { int temp; for(int i=0;i<9;i++) for(int j=0; j<9-i; j++){ if(list[j]>list[j+1]) { temp =list[j]; list[j] =list[j+1]; list[j+1] =temp; } } } int main( ) { int list [10]; int n=9,m=0; printf(" Input 10 number: "); for( int i=0 ; i<10;i++) scanf("%d",&list[i]); printf("\n"); BubbleSort(list); for(int i =0;i<10;i++) printf("%5d",list[i]); printf("\n"); }
//快速排序算法 #include <iostream> #include <stdio.h> void improveqsort (int *list, int m, int n) { int k,t,i,j; /* for(int i =1; i<10;i++) printf("%3d",list[i]); */ if(m<n) { i =m; j=n+1; k=list[m]; while(i<j) { for(i =i+1;i<n;i++) if(list[i]>=k) break; for(j=j-1;j>m;j--) if(list[j]<=k) break; if(i<j) { t =list[i]; list[i]=list[j]; list[j] =t; } } t =list[m]; list[m]=list[j]; list[j]=t; improveqsort(list,m,j-1); improveqsort(list,i,n); } } int main() { int list[10]; int n=9; int m=0; int i; printf(" Input 10 number: "); for( i=0;i<10;i++) scanf("%d",&list[i]); printf("\n"); improveqsort(list,m,n); for(i=0;i<10;i++) printf("%5d",list[i]); printf("\n"); }
关于程序算法艺术与实践更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.