C语言的经典排序法及代码大全
4096 点击·0 回帖
![]() | ![]() | |
![]() | //插入排序
#include<stdio.h> void main() { int a[10]; int i,j,k; printf("请输入10个数字!空格隔开n"); for(i=0;i<10;i++) scanf("%d",&a); for(i=1;i<10;i++) { k=a; j=i-1; while((j>=0)&&(a[j]>k)) { a[j+1]=a[j]; j--; } a[j+1]=k; } printf("你输入的数字按照插入排序法由小到大排序后为n"); for(i=0;i<10;i++) printf("%d",a); printf("n"); } //快速排序 #include<stdio.h> void main() { int a[10]; int i; int p(int a[],int low,int high); void q(int a[],int low,int high); printf("请输入10个数字,用空格隔开!!n"); for(i=0;i<10;i++) scanf("%d",&a); printf("快速排序法由小到大排序后:n"); for(i=0;i<10;i++) printf("%d",a); int p(int a[],int low,int high); { int key=a[low],p; while(low<high) { while(low<high && a[high]>=key) --high; p=a[low];a[low]=a[high];a[high]=p; while(low<high && a[low]<=key) ++low; p=a[high];a[high]=a[low];a[low]=p; } a[low]=key; return low; } void q(int a[],int low,int high); { int j; if(low<high) { j=p(a,low,high); q(a,low,j-1); q(a,j+1,high); } } } //冒泡排序 #include<stdio.h> void main() { int a[10]; int i,j,k; printf("请输入10个数,用空格隔开!!n"); for(i=0;i<10;i++) scanf("%d",&a); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { k=a[j]; a[j]=a[j+1]; a[j+1]=k; } printf("冒泡排序法由小到大排序后:n"); for(i=0;i<10;i++) printf("%d",a); printf("n"); } //希尔排序 #include<stdio.h> void main() { int a[10]; int i,j,k=9,t; printf("请输入10个数字:之间用空格隔开!!!n"); for(i=0;i<10;i++) scanf("%d",&a); while(k>0) { for(i=k;i<10;i++) { j=i-k; while(j>=0) if(a[j]>a[j+k]) {t=a[j];a[j]=a[j+k];a[j+k]=t;} else break; } k/=2; } printf("你输入的数字希尔排序由小到大排序为:n"); for(i=0;i<10;i++) printf("%4d",a); printf("n"); } //选择排序 #include<stdio.h> void main() { int a[10]; int i,j,k,m; printf("请输入10个数字,数字间用空格隔开!!n"); for(i=0;i<10;i++) scanf("%d",&a); for(i=0;i<9;i++) { k=i; for(j=i+1;j<10;j++) if(a[k]>a[j]) k=j; if(k!=i) { m=a; a=a[k]; a[k]=m; } } printf("由选择法由小到大排序后:n"); for(i=0;i<10;i++) printf("%d",a); printf("n"); } | |
![]() | ![]() |