一、冒泡排序
原理:相邻元素比较,大的往后“冒泡”。
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++)
for (j = 0; j < n-i-1; j++)
if (arr[j] > arr[j+1]) { // 升序排列,降序改 <
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
二、选择排序
原理:每次选最小(或最大)元素放到前端。
void selectionSort(int arr[], int n) {
int i, j, min_idx, temp;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx]) min_idx = j;
temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
三、插入排序
原理:将元素插入已排序部分的合适位置。
void insertionSort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i]; // 待插入元素
j = i - 1;
while (j >= 0 && arr[j] > key) { // 升序,降序改 <
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
}