#include <stdio.h>
#include <stdlib.h>
void swap(int* num1, int* num2) {
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
void SelectSort1(int arr[], int len) {
//选择排序
for (int i = 0; i < len - 1; i++) {
int max = 0;
for (int j = 1; j < len - i; j++) {
if (arr[j] > arr[max]) {
max = j;
}
}
if (max != (len - i - 1)) {
swap(&arr[max], &arr[len - i - 1]);
}
}
}
void BubbleSort(int arr[], int len) {
//冒泡排序
for (int i = 0; i < len - 1; i++) {
bool sorted = true;
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
sorted = false;
}
}
if (sorted) break;
}
}
void InsertSort(int arr[], int len) {
//插入排序
int preIndex = 0, current = 0;
for (int i = 1; i < len; i++) {
preIndex = i - 1;
current = arr[i];
while (preIndex >= 0 && arr[preIndex] > current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
}
void ShellSort(int arr[], int len) {
//希尔排序,用的很少
int gap = len / 2;
for (; gap > 0; gap = gap / 2) {
for (int i = gap; i < len; i++) {
int current = arr[i];
int j = 0;
for (j = i - gap; j >= 0 && arr[j] > current; j -= gap) {
arr[j + gap] = arr[j];
}
arr[j + gap] = current;
}
}
}
int main(void) {
int max = 0;
int beauties[] = {
163, 161, 158, 165, 171, 170, 163, 1, 2 };
int len = sizeof(beauties) / sizeof(beauties[0]);
ShellSort(beauties, len);
//BubbleSort(beauties, len);
for (int i = 0; i < len; i++) {
printf("%d ", beauties[i]);
}
}
所有排序都正常运行