c语言实现各种排序程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言实现各种排序方法:
1.快速排序:
#include
#include
void kuai_pai(int *a,int low,int high) {
int left,right,middle,i,j,temp;
left=low;
right=high;
middle=(left+right)/2;
while(left { while(left while(right>low&&a[right]>a[middle]) right--; if(left<=right) { temp=a[left]; a[left]=a[right]; a[right]=temp; left++; right--; } } if(left kuai_pai(a,left,high); if(right>low) kuai_pai(a,low,right); } void main() { int *a,i,n; a=(int *)malloc(100); if(NULL==a) { printf("allocation failture\n"); exit(1); } printf("请输入你要排序的元素的个数\n"); scanf("%d",&n); printf("现在开始输入%d个元素\n",n); for(i=0;i!=n;++i) scanf("%d",&a[i]); kuai_pai(a,0,n-1); printf("排序后为:\n"); for(i=0;i!=n;++i) printf("%d ",a[i]); printf("\n"); free(a); } 2.shell排序 #include #include void shell(int *a,int n) { int gap,i,j,temp; for(gap=n/2;gap>0;gap=gap/2) for(i=gap;i for(j=i-gap;j>=0&&a[j]>a[j+gap];j=j-gap) { temp=a[j]; a[j]=a[j+gap]; a[j+gap]=temp; } } void main() { int *a,i,n; a=(int *)malloc(100); if(NULL==a) { printf("allocation failture\n"); exit(1); } printf("请输入你要排序的元素的个数\n"); scanf("%d",&n); printf("现在开始输入%d个元素\n",n); for(i=0;i!=n;++i) scanf("%d",&a[i]); shell(a,n); printf("排序后为:\n"); for(i=0;i!=n;++i) printf("%d ",a[i]); printf("\n"); free(a); } 3.插入法排序 #include #include void cha_ru(int *a,int n) { int i,j,temp;