排序
在i=0时,j从下往上两两比较出最小值;
冒泡排序
void swap(int &x, int &y) {
int tmp = x;
x = y;
y = tmp;
}
void bubbleSort(int* array, int length) {
for (int i = 0; i < length;i++) {
for (int j = length - 2; j >= i; j--) { //j从后向前循环,且从倒数第二个数开始
if (array[j] > array[j + 1]) //若前者>后者,交换两数
swap(array[j], array[j + 1]);
}
}
}
优化
void swap(int &x, int &y) {
int tmp = x;
x = y;
y = tmp;
}
//若在i的一个循环里,没有发生一次数据交换,说明i后面都是有序的,不用再向后循环
void bubbleSort(int* array, int length) {
bool flag = true;
for (int i = 0; i < length && flag;i++) { //flag为true退出循环
flag = false; //flag初始值为false
for (int j = length - 2; j >= i; j--) {
if (array[j] > array[j + 1]) {
swap(array[j], array[j + 1]);
flag = true; //有数据交换,flag为true
}
}
}
}
int main() {
int a[] = { 5,4,9,8,7,6,0,3,1,2 };
int len = sizeof(a) / sizeof(a[0]);
bubbleSort(a,len);
for (int i = 0; i < len; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}