最简单的排序方法有两种:起泡法(冒泡法)、选择法
这两种排序法是初识C语言最基本的算法,下面介绍了起泡法(冒泡法)和选择法两种排序方法(均使用5个数比大小来示例)
一、起泡法(冒泡法)
起泡法原理:
1.比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最小(大)的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码如下(示例):
int main()
{
int a[5];
int i, j, t;
for (i = 0; i <= 4; i++)
scanf("%d", &a[i]);//输入需要排序的数字
for(j=0;j<=4;j++)
for(i=0;i<=3-j;i++)
if (a[i] > a[i + 1])
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}//将其依次进行比较,并进行调换
for (i = 0; i <= 4; i++)
printf("%d\t", a[i]);//输出排序后的结果
return 0;
}
运行结果
待排序序列:[4,5,3,2,1]
排序后序列:[1,2,3,4,5]
二、选择法
原理
1.在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3.重复上面的步骤,直到没有任何一对数字需要比较。
代码如下(示例):
int main()
{
int a[5];
int i, j, t;
for (i = 0; i <= 4; i++)
scanf("%d", &a[i]);//输入需要排序的数字
for(i=0;i<=3;i++)
for(j=i+1;j<=4;j++)
if (a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}//将其依次进行比较,并进行调换
for (i = 0; i <= 4; i++)
printf("%d\t", a[i]);//输出排序后的结果
return 0;
}
运行结果:
待排序序列:[4,5,3,2,1]
排序后序列:[1,2,3,4,5]
总结
以上就是关于起泡法(冒泡法)和选择法的内容,本文仅仅简单介绍了起泡法(冒泡法)和选择法的使用,而排序的方法不只有起泡法(冒泡法)和选择法,除此之外还有插入排序、快速排序、归并排序等方法。