冒泡排序

冒泡排序作为最简单的算法之一,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作就是重复地比较元素,直到元素们都落座了正确的位置,序列排序就算完成。
简而言之,将每次相邻两个关键字进行比较(0与1,1与2依次比较大小),小数上浮,大数下沉,每趟排序找出最大的数换到最右边。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,“blue、blue~”
c84bc96ad1ae5c83768f55cc0afc90af5503

实现

1
2
3
4
5
6
7
8
9
10
11
12
void bubbleSort (int array[], int len) {
int temp;
int outer, inner;
for (outer=0; outer<len-1; outer++) /* 外循环为排序趟数,len个数进行len-1趟 */
for (inner=0; inner<len-1-outer; inner++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */
if (array[inner] > array[inner+1]) { /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
temp = array[inner];
array[inner] = array[inner+1];
array[inner+1] = temp;
}
}
}