c语言实现各种排序程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

for(i=0;i

{

temp=a[i+1];

for(j=i;j>=0&&temp

a[j+1]=a[j];

a[++j]=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]);

cha_ru(a,n);

printf("排序后为:\n");

for(i=0;i!=n;++i)

printf("%d ",a[i]);

printf("\n");

free(a);

}

4.堆排序

#include

#include

void dui_paixue(int *a,int n,int m)

{

int i,j,l,temp;

i=m;

j=2*i+1;

temp=a[i];

while(j

相关文档
最新文档