C语言所有内部排序算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言所有内部排序算法冒泡法,选择法,插入法,快排法,希尔,归并,... 1冒泡法:

#include

#include

void mao_pao(int *a,int n)

{

int i,j,temp,flag;

for(i=0;i

{

flag=0;

for(j=0;j

{

if(a[j]>a[j+1])

{

flag=1;

temp=a[j];

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

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

mao_pao(a,n);

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

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

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

printf("\n");

free(a);

}

2,选择排序法

#include

#include

void xuan_zhe(int *a,int n) {

int i,j,temp,max;

for(i=0;i

{

max=i;

for(j=i+1;j

{

if(a[j]

max=j;

}

if(i!=max)

{

temp=a[i];

a[i]=a[max];

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

xuan_zhe(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]=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 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);

相关文档
最新文档