1.暴力解法
#pragma once
#ifndef _9_12_H
#define _9_12_H
//辅助函数交换x,y的值
template<class T>
void mySwap(T &x, T &y) {
T temp = x;
x = y;
y = temp;
}
//直接选择排序暴力解法
template<class T>
void bubbleSort(T a[], int n) {
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n-1-i; j++) {
if (a[j] > a[j+1]) {
mySwap(a[j],a[j+1])
}
}
}
}
#endif // !_9_12_H
2.优化
#pragma once
#ifndef _9_12_H
#define _9_12_H
//辅助函数交换x,y的值
template<class T>
void mySwap(T &x, T &y) {
T temp = x;
x = y;
y = temp;
}
//直接选择排序暴力解法
template<class T>
void bubbleSort(T a[], int n) {
int i = n - 1;//i是下一趟需参与排序交换的元素的最大下标
while (i > 0) {
int lastExchangeIndex = ;//每一趟开始时,设置交换标志为0(未交换)
for (int j = 0; j < i; j++) {
if (a[j + 1] < a[j]) {
mySwap(a[j], a[j + 1]);
lastExchangeIndex = j;
}
i = lastExchangeIndex;
}
}
}
#endif // !_9_12_H