冒泡排序

冒泡排序是一种简单直观的排序算法,它重复地遍历未排序的数列,一次比较两个元素,如果它们的顺序错误,就把他们的位置交换。

算法步骤:

  1. 比较相邻的元素,如果第一个比第二个大,就交换位置;
  2. 对每一对相邻元素做相同的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数;
  3. 针对所有元素重复以上步骤,除了最后一个;
  4. 持续每次对越来越少的元素重复上述步骤,直到没有任何一对数字需要比较;

动图演示

bubbleSort

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 方法模版,适配int、float类型数据
template <typename T>
void bubbleSort(T arr[], size_t len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
T tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}

// main函数
int main(int argc, const char * argv[]) {
int arr[] = {61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62};
int len = (int) sizeof(arr) / sizeof(*arr);
bubbleSort(arr, len);
for (int i = 0; i < len; i++) {
std::cout<< "arr[" << i << "] = " << arr[i] << std::endl;
}
return 0;
}