下面分别介绍了几种常见的排序方法
#include <stdio.h>
//希尔排序
void shellsort(int a[], int n) {
int j;
int d = n;
while (d > 1) {
d = d / 2;
for (int x = 0; x < d; x++) {
for (int i = x + d; i < n; i = i + d) {
int temp = a[i];
for (j = i - d; j > -1 && temp < a[j]; j = j - d) {
a[j + d] = a[j];
}
a[j + d] = temp;
}
}
}
}
//堆排序
void heapSort(int arr[], int n);
void heapInsert(int arr[], int n);
void heapify(int arr[], int index, int size);
void swap(int arr[], int i, int j);
void heapSort(int arr[], int size) {
heapInsert(arr, size);
while (size > 1) {
swap(arr, 0, size - 1);
size--;
heapify(arr, 0, size);
}