比较相邻的两项,交换顺序排错的项
时间复杂度为O(n^2)
- void bubbleSort(int arr[], int size) {
- for (int i = 0; i < size - 1; i++) {
- for (int j = 0; j < size - i - 1; j++) {
- if (arr[j] > arr[j + 1]) {
- // 交换 arr[j] 和 arr[j+1]
- int temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- }
- void selectionSort(int arr[], int size) {
- for (int i = 0; i < size - 1; i++) {
- // 找到未排序部分的最小元素的索引
- int minIndex = i;
- for (int j = i + 1; j < size; j++) {
- if (arr[j] < arr[minIndex]) {
- minIndex = j;
- }
- }
-
- // 将最小元素交换到已排序部分的末尾
- if (minIndex != i) {
- int temp = arr[i];
- arr[i] = arr[minIndex];
- arr[minIndex] = temp;
- }
- }
- }
- void insertionSort(int arr[], int size) {
- for (int i = 1; i < size; i++) {
- int key = arr[i];
- int j = i - 1;
-
- // 将大于key的元素向右移动
- while (j >= 0 && arr[j] > key) {
- arr[j + 1] = arr[j];
- j = j - 1;
- }
- arr[j + 1] = key;
- }
- }