好记性不如烂笔头。
冒泡排序属于交换排序,交换排序的基本思想是:两两比较待排序记录的关键字,当两个记录的次序相反时即进行交换,直到没有反序的记录为止。
#include <iostream>
using namespace std;
void printPro(int *input, int len)
{
for (int i = 0; i < len; ++i) cout << input[i] << " ";
cout << endl;
}
void swap(int &fir, int &sec)
{
int temp = fir;
fir = sec;
sec = temp;
}
void BubbleSort(int *input, int len){
if (input == nullptr || 0 == len) return;
bool hasExchanged; // 交换标志
for (int i = 0; i < len - 1; ++i) // 最多n-1趟
{
hasExchanged = false; // 每一趟开始前置为false,表示无交换
for (int j = len - 1; j>i; --j)
{
if (input[j] < input[j - 1])
{
swap(input[j], input[j - 1]);
hasExchanged = true; // 有交换置为true
}
}
if (!hasExchanged) return; // 无交换,