目录
基本概要
本文主要介绍C语言排序的四种算法,都是由小到大排序,由易到难,大家可以择一进行学习。
希尔排序适合处理大型数据;插入排序适合排基本有序小型数字;冒泡适合排小型数字。
1、冒泡排序(bubSort)
基本思想:
每一轮将序列中的最大值放在底部,较小值像泡泡一样浮出来。
相邻的一对对比较交换,每次排序下来,最大的数值,就会在数组最末尾,重复排序,每轮的较大值就会沉下去,较小值就会冒泡出来 。
固定第一大,固定第二大,固定第三大.......
所以“外循环”为冒泡排序的次数;“内循环“为本次排序时数值的比较交换
冒泡排序多少次? 每次冒泡排序都会有最大的值放在最末尾,所以第一位是不用管了,即 n-1 次
比较交换多少次? 本来交换只需要交换n-1次,但是每次冒泡之后,排序好的数字就可以不管了,所以是“n-1-i”次,i为已经冒泡了的次数
代码实现:
#include<stdio.h>
int main()
{
//定义并初始化数组
int arr[10] = { 3,6,2,5,0,8,1,4,7,9 };
int i = 0;
for (i; i < 9; i++) //length-1
{
int j = 0;
for (j; j < 9 - i; j++) //length-1-i
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//输出排序后的数组
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
2、选择排序(selectSort)
基本思想:
基本思想与bub很像
将本轮首位数字与后面元素依次比较