Sort|冒泡排序 (Bubble Sort)
大约 1 分钟
冒泡排序 (Bubble Sort)
实现步骤
- 第一次,左边开始两两对比,如果左边的值大于右边的值,就交换它们,对比结束时末尾是最大数字
- 第二次,剔除末尾,重复步骤1。
- 依此类推,进行第三次、第四次,直到整个数组有序。
代码实现
#include <iostream>
//引入之前的模板
template <typename T>
void swap(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
//冒泡排序
template <typename T>
void bubbleSort(T* array, int length)
{
for (int i = 0; i < length; ++i)
{
bool tag = false;
for (int j = 0; j < length - i - 1; ++j)
{
if (array[j] > array[j + 1])
{
swap(array[j], array[j + 1]);
tag = true;
}
}
if (!tag)
{
break;
}
}
}
//打印数组
template <typename T>
void showArray(T* array, int length)
{
for (int i = 0; i < length; ++i)
{
std::cout << array[i] << " ";
}
cout << endl;
}
//主函数
int main()
{
int arr[] = {64, 32, 16, 8, 4, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
showArray(arr, n);
return 0;
}