C++算法巩固——冒泡排序
## 代码示例:
- 比较数组相邻元素,如果第一个比第二个小,则将二者互换。
- 重复以上步骤,直到数组内元素由大到小排列。
//1_冒泡排序
void main() {
int arr[] = { 1, 5, 6, 3, 6, 8, 9, 2, 4 };
//输出
cout << "排序前 :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
cout << arr[i] << " ";
}
cout << endl;
//准备所需的数组元素总数
int arrCount = sizeof(arr) / sizeof(arr[0]);
//因每一轮将找出一个最大值,故共执行 数组元素数-1 轮排序
for (int i = 0; i < arrCount - 1; i++) {
//因两两相比,且当前所剩未排序元素为 总元素数-i
//故本轮需执行 总元素数 - i - 1 次比较
for (int j = 0; j < arrCount - i - 1; j++) {
//两元素相比较,符合条件进行交换
if (arr[j] < arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
//输出
cout << "排序后 :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
cout << arr[i] << " ";
}
cout << endl;
}
## 小结:
冒泡排序几乎是各门语言都要涉及到的基础算法之一了,面试爱问考试爱考,也是入门算法领域的第一步,一定要牢固掌握。
注意:排序总轮数 = 元素总数 - 1
每轮对比次数 = 元素总数 - 当前轮数 - 1