#include#include #include void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void BubbleSort(int *a, int n){ for (int i = 0; i < n - 1; ++i) for (int j = n - 1; j > i; --j) if (a[j] < a[j - 1]) swap(a, j - 1, j);}void SelectSort(int *a, int n){ int k; for (int i = 0; i < n - 1; ++i){ k = i; for (int j = i + 1; j < n; ++j){ if (a[j] < a[k]) k = j; } if (k != i) swap(a, k, i); }}void InsertSort(int *a, int n){ int tmp, j; for (int i = 1; i < n; ++i){ tmp = a[i]; j = i - 1; while (j >= 0 && a[j] > tmp){ a[j + 1] = a[j]; --j; } a[j + 1] = tmp; }}void ShellSort(int *a, int n){ int tmp, j; for (int inc = n / 2; inc > 0; inc /= 2) for (int i = inc; i < n; ++i){ tmp = a[i]; j = i - inc; while (j >= 0 && a[j]>tmp){ a[j + inc] = a[j]; j -= inc; } a[j + inc] = tmp; }}int main(){ srand(time(NULL)); const int cnt = 10; int a[cnt]; for (int i = 0; i < cnt; ++i) a[i] = rand() % 100; ShellSort(a, cnt); for (int i = 0; i < cnt; ++i) printf("%d\t", a[i]); printf("\n");}