## 在下面的程序中我们将输入“23 12 87 67 45 54 876 321 99 79”这10个数,并在下面六个排序程序中分别运行,查看其运行结果。
1.冒泡排序法


?
?
程序代码:
#include<stdio.h>
int main()
{
int a[10];
int i,k;
int t; //定义变量及数组为基本整型
printf("please input ten numbers:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]); //从键盘中输入10个数
}
for(i=0;i<9;i++) //变量i代表比较的趟数
for(k=i+1;k<10;k++) //变最k代表每趟两两比较的次数
{
if(a[i]>a[k])
{
t=a[i];
a[i]=a[k];
a[k]=t; //产利用中间变童实现两值互换
}
}
printf("output sort ten numbers:\n");
for(i=0;i<10;i++){
printf("%d ",a[i]); //将胃泡排序后的顺序输出
}
printf("\n");
return 0;
}
运行结果:

?
2.选择排序法

?程序代码:
#include<stdio.h>
void sort(int array[],int n);
int main()
{
int a[10];
int i;
printf("please input ten numbers:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}printf("\n");
sort(a,10);
printf("the sort ten numbers:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}printf("\n");
return 0;
}
void sort(int array[],int n)
{
int j,k,m,t;
for(j=0;j<n-1;j++)
{
m=j;
for(k=j+1;k<n;k++)
if(array[k]<array[m])
m=k;
t=array[m];array[m]=array[j];array[j]=t;
}
}
运行结果:

?
3.直接插入排序法

程序代码:
#include<stdio.h>
int main()
{
int Insort(int x[],int y); /* 调用自定义函数 Insort()*/
int a[11]; //定义数组及变量
printf("please input ten numbers:\n");
for(int i=1;i<11;i++){
scanf("%d",&a[i]); //接收从键盘输入的10个数据到数组a
}
Insort(a,10);
printf("please sort ten numbers:\n");
for(int i=1;i<11;i++){
printf("%d ",a[i]);
}printf("\n");
return 0;
}
int Insort(int x[],int y) /* 自定义函数 Insort()*/
{
int i,j;
for(i=2;i<=y;i++) //数组下标从2开始,x[0]做监视哨,x[1]一个数据无可比性
{
x[0]=x[i]; //给监视哨陚值
j=i-1; //确定要比较元素的最右边位黄
while(x[0]<x[j])
{
x[j+1]=x[j]; /数据右移
j--; //产移向左边一个未比较的数
}
x[j+1]=x[0]; //在确定的位置插入x[i]
}
return 0;
}
运行结果:

?
|