您好,欢迎来到华拓网。
搜索
您的当前位置:首页c语言实现各种排序程序

c语言实现各种排序程序

来源:华拓网


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(leftleft++;

while(right>low&&a[right]>a[middle])

right--;

if(left<=right)

{

temp=a[left];

a[left]=a[right];

a[right]=temp;

left++;

right--;

}

}

if(leftkuai_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\

printf(\"现在开始输入%d个元素\\n\

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

scanf(\"%d\

kuai_pai(a,0,n-1);

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

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

printf(\"%d \

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;ifor(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\

printf(\"现在开始输入%d个元素\\n\

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

scanf(\"%d\

shell(a,n);

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

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

printf(\"%d \

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&&tempa[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\

printf(\"现在开始输入%d个元素\\n\

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

scanf(\"%d\

cha_ru(a,n);

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

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

printf(\"%d \

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{

if(jj++;

if(a[j]break;

else

{

a[i]=a[j];

i=j;

j=2*i+1;

}

}

a[i]=temp;

}

void dui(int *a,int n)

{

int i;

for(i=(n-2)/2;i>=0;i--)

{

dui_paixue(a, n, i);

}

}

void main()

{

int *a,*b,i,j,temp,n,k=1;

a=(int *)malloc(100);

if(NULL==a)

{

printf(\"allocation failture\\n\");

exit(1);

}

b=(int *)malloc(100);

if(NULL==b)

{

printf(\"allocation failture\\n\");

exit(1);

}

printf(\"请输入你要排序的元素的个数\\n\");

scanf(\"%d\

printf(\"现在开始输入%d个元素\\n\

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

scanf(\"%d\

dui(a,n);

for(j=n-1;j>=0;--j)

{

temp=a[0];

a[0]=a[j];

a[j]=temp;

dui_paixue( a, j, 0);

}

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

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

printf(\"%d \

printf(\"\\n\");

free(a);

free(b);

}

5. 二路归并排序

#include

#include

void gui_bin(int *a,int *b,int k,int n)

{

int l1,l2,i,j,u1,u2,l=0;

l1=0

while(l1+k{

l2=l1+k;

u1=l2-1;

u2=(l2+k-1i=l1;

j=l2;

while(i<=u1&&j<=u2)

{

if(a[i]<=a[j])

b[l++]=a[i++];

else

b[l++]=a[j++];

}

while(i<=u1)

b[l++]=a[i++];

while(j<=u2)

b[l++]=a[j++];

l1=u2+1;

}

for(i=l1;ib[l++]=a[i];

}

void main()

{

int *a,*b,i,n,k=1;

a=(int *)malloc(100);

if(NULL==a)

{

printf(\"allocation failture\\n\");

exit(1);

}

b=(int *)malloc(100);

if(NULL==b)

{

printf(\"allocation failture\\n\");

exit(1);

}

printf(\"请输入你要排序的元素的个数\\n\");

scanf(\"%d\

printf(\"现在开始输入%d个元素\\n\

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

scanf(\"%d\

while(k{

gui_bin(a,b,k,n);

for(i=0;ia[i]=b[i];

k=k*2;

}

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

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

printf(\"%d \

printf(\"\\n\");

free(a);

free(b);

}

6. 选择法排序

#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\

printf(\"现在开始输入%d个元素\\n\

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

scanf(\"%d\

xuan_zhe(a,n);

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

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

printf(\"%d \

printf(\"\\n\");

free(a);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo3.cn 版权所有 湘ICP备2023017654号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务