分享
 
 
 

三种排序算法及三种变量交换的宏实现

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

1、快速排序

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define N 100

#define SWAP(x,y)

{

int t;t=(x);(x)=(y);(y)=t;

}

int partition(int a[],int l,int r);

void quick_sort(int a[],int l,int r);

int main(int argc,char *argv[])

{

int a[N],n,i;

memset(a,0,sizeof(a));

printf("Enter how many numbers \n");

scanf("%d",&n);

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

scanf("%d",a+i);

printf("before sorted:\n");

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

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

printf("\n");

quick_sort(a,0,n-1);

printf("after sorted:\n");

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

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

printf("\n");

system("pause");

return 0;

}

void quick_sort(int a[],int l,int r)

{

int i;

if(r<=l)return;

i=partition(a,l,r);

quick_sort(a,l,i-1);

quick_sort(a,i+1,r);

return ;

}

int partition(int a[],int l,int r)

{

int i,j,v;

i=l-1;

j=r;

v=a[r];

for(;;)

{

while(a[++i]<v);

while(v<a[--j])if(j==l)

break;

if(j<=i)

break;

SWAP(a[i],a[j]);

}

SWAP(a[i],a[r]);

return i;

}

2、冒泡排序

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define N 100

#define SWAP(a, b) {(a) ^= (b); (b) ^= (a); (a) ^= (b);}

int main()

{

int num,a[N],i,j;

memset(a,0,sizeof(a));

printf("Enter how many elements in the array?\n");

scanf("%d",&num);

for(i=0;i<num;i++)

scanf("%d",a+i);

printf("before sorted:\n");

for(i=0;i<num;i++)

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

printf("\n");

for(i=num-1;i>0;i--)

for(j=0;j<i;j++)

{

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

SWAP(a[j],a[j+1]);

}

printf("after sorted:\n");

for(i=0;i<num;i++)

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

printf("\n");

system("pause");

return 0;

}

3、选择排序

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define N 100

#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))

int a[N],n=0;

void sort_a();

void p_a();

int main()

{

int i=0;

memset(a,0,sizeof(a));

printf("How many int numbers?\n");

scanf("%d",&n);

if(n<1 || n>N)

{

printf("can't accept\n");

return 1;

}

else

{

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

scanf("%d",a+i);

}

printf("before sorted:\n");

p_a();

sort_a();

printf("after sorted\n");

p_a();

system("pause");

return 0;

}

void p_a()

{

int i=0;

for(i=0;i<n-1;i++)

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

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

}

void sort_a()

{

int i,j,min,temp;

for(i=0;i<n-1;i++)

{

min=i;

for(j=i;j<n;j++)

{

if(a[j]<a[min])

min=j;

}

if(min!=i)

SWAP(a[min],a[i],temp);

}

}

--------------------------------------------

简单测试结果:

How many int numbers?

6

13 7 19 5 29 31

before sorted:

13 7 19 5 29 31

after sorted

5 7 13 19 29 31

请按任意键继续. . .

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有