灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3135回复:0

C语言的经典排序法及代码大全

楼主#
更多 发布于:2013-11-03 14:41
//插入排序

#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");

}

喜欢0 评分0
游客

返回顶部