1、冒泡排序
// 冒泡排序
#include <iostream>
using namespace std;
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(int arr[], int size){
for (int i = 0; i < size-1; i++){
for (int j = 0; j < size-1-i; j++){
if (arr[j] > arr[j+1]){
swap(arr[j], arr[j+1]);
}
}
}
}
int main() {
int arr[] = {1,7,4,6,3,2,5,8,9,0};
int size = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, size);
for (int i = 0; i < size; i++)
cout << arr[i] << endl;
return 0;
}
2、双向冒泡,正向一回,反向一回,如此反复。
// 双向冒泡排序
#include <iostream>
using namespace std;
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(int arr[], int size){
int flag = 1;
int low = 0, high = size - 1;
while(low < high && flag){
flag = 0;
for (int i = low; i < high; i++){
if (arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
flag = 1;
}
}
high--;
for (int j = high; j > low; j--){
if (arr[j] < arr[j-1]){
swap(arr[j], arr[j-1]);
flag = 1;
}
}
low++;
}
}
int main() {
int arr[] = {1,7,4,6,3,2,5,8,9,0};
int size = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, size);
for (int i = 0; i < size; i++)
cout << arr[i] << endl;
return 0;
}