排序算法
- 冒泡排序
// bubble sort
// loop to control number of passes
for (int pass = 1; pass < SIZE; ++pass) {
// loop to control number of comparisons per pass
for (size_t i = 0; i < SIZE - 1; ++i) {
// compare adjacent elements and swap them if first
// element is greater than second element
if (a[i] > a[i + 1]) {
int hold = a[i];
a[i] = a[i + 1];
a[i + 1] = hold;
}
}
}
解释:若元素有n个,外层循环循环n-1次,因为当排序了n-1遍时,数组的后n-1个元素是已经排好的,那么剩下的一个元素自然是最小的(最大的),处于第一个位置,于是整个序列便是有序的。
假设从0至n-1排序,通过不断地判断当前遍历元素是否比下一个元素大(或小),大则与下一个元素交换位置,第一遍冒泡遍历使得最大的元素跑到最大的位置上去,第二遍冒泡使得次大的元素跑到次大的位置上去,以此类推。