满意答案
j6536561
2013.07.04
采纳率:51% 等级:11
已帮助:8799人
排序算法
①:选择法:
选择法(按升序来说):将第一位和第二位比较,小者放在第一位,再将此时的第一位与第三位比较,仍然是小者放在第一位,如此重复,当第一位和最后一位比较完后第一位上存放的就是最小值了,再用相同的方法对第二位设置,第二位和最后一位比完后第二位上存放的就是次最小值了,然后第三位、第四位...都进行相同的操作,当倒数第二位也被比较完后,升序序列就排好了。
例题见《C语言程序设计》-谭浩强 P152 课后习题7.2
程序如下:
#include "stdio.h"
main()
{ int arr[10],i,j,temp;
printf("请输入十个整数:\n");
for(i=0;i<=9;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<9;i++)
{ for(j=i+1;j<10;j++)
{
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
printf("排序后的序列为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",arr[i]);
}
getch();
}
②:起泡法 (又名冒泡法)
起泡法(按升序来说):假设有10个数,那么共需要比较9轮,第一轮中把第一个数和第二个数比较,大者放到后面,第二个数再和第三个数比较,大者放到后面,第三个和第四个数比较,大者放到后面……第九个数和第十个数比较,大者放到后面,这样,第一轮比较结束后最大的数就放到最后一位,用同样的方法比较,第二轮比较完后次大值就放在倒数第二位上……这样直到比较完第九轮,所有的数字都已经按照升序排列。
例题见《C语言程序设计》-谭浩强 P134 例题7.3
程序如下:(设共十个数)
#include
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}
这是我写的,希望对楼主有所帮助
07分享举报