排序
来源:互联网 发布:总结 优化机构设置 编辑:程序博客网 时间:2024/06/06 01:09
将一串数字从小到大排序:
冒泡排序:
C语言程序如下:
#include <stdio.h>
/*冒泡排序*/
int main()
{
int a[10] = {0};
int i = 0;
int j = 0;
int temp = 0;
/*1、从终端里面获取是个数字保存到数组a中*/
printf("Please input ten num:\n");
for( i = 0; i < 10; i++)
{
scanf("%d",&a[i]);
}
/*确保从终端输入的十个数据能够正确地保存在数组a中*/
// for( i = 0; i < 10; i++)
// {
// printf("%d\t",a[i]);
// }
/*2、对数组a中的数据进行降序排序*/
for(i = 1; i <= 9; i++) //i的值就代表第i轮排序;
{
/*进入每一轮的排序,从a[0]和a[1]开始比较*/
for(j = 0; j < (10 - i); j++) //对于第一轮:a[8]和a[9]进行比较;
{ //对于第二轮:a[7]和a[8]进行比较;
if(a[j] < a[j + 1]) //i = 1; a[8]和a[9]===>j = 8 j + 1 = 9 j < 9;和i有关;10 - i
{ //i = 2; a[7]和a[8]===>j = 7 j + 1 = 8 j < 8; 10 - i
/*两个数进行了交换*/
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
/*经过排序之后的打印*/
for( i = 0; i < 10; i++)
{
printf("%d\t",a[i]);
}
return 0;
}
选择排序:
C语言程序如下:
#include <stdio.h>
int main()
{
int i,j;
int t=0;
int a[10] = {0};
printf("input ten numbers:");
for(i = 0;i < 10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i < 10;i++)
{
for(j = i;j < 10;j++)
{
if(a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(i = 0;i < 10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
插入排序:
C语言程序如下:
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
int a[10] = {0};
int temp;
printf("input ten numbers:\n");
for (;i < 10;i++)
{
scanf("%d",&a[i]);
}
for(i = 1;i < 10;i++)
{
for(j = i;j > 0;j--)
{
if(a[j] < a[j - 1])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
else
{
break;
}
}
}
for(i = 0;i < 10;i++)
{
printf("%d",a[i]);
}
return 0;
}
三种排序方法大致上写法只有细微的差别,但是具体的含义有很大的差别。