在C语言中,我们有时需要对一组数进行排列,那我们需要怎样的方法才能成功排序呢?
选择和冒泡是两种最为常见排序方法
先讲一下选择法它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
简单来说就是第一轮找到一个最大或最小,第二轮在剩下的数中在选出第二大(小)的数,以此类推
在代码中的核心部分
冒泡排序法
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
简单来说冒泡法,顾名思义,就是两两比较,最大的数会在第一轮比较完出现,然后继续第二轮比较,第二大的数也会在第二轮结束时输出
其代码核心部分
7 int array[10] = {78, 12, 54, 55, 75, 10, 99, 35, 88, 4};
8 length = sizeof(array) / sizeof(int);
9 for (i = 0; i < length - 1; i++) {
10 for (j = 0; j < length - 1 - i; j++) {
11 if (array[j] < array[j + 1]) {
12 temp = array[j];
13 array[j] = array[j + 1];
14 array[j + 1] = temp;
15 }
16 }
17 }