希尔排序源码

来源:互联网 发布:淘宝网店怎么管理 编辑:程序博客网 时间:2024/05/11 22:31

希尔排序源码

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>/*打印数组*/void MyPrint(int *arr, int len){for (int i = 0; i < len; i++){printf("%d\t", arr[i]);}printf("\n");}/*希尔排序*/void ShellSort(int *arr, int len){int increment = len;do {/*缩减增量*/increment = increment / 3 + 1;for (int i = 0; i < increment; i++){/*遍历每一组*/for (int j = i + increment; j < len; j += increment){if (arr[j] < arr[j - increment]){int temp = arr[j];int k = j - increment;for (; k >= 0 && temp < arr[k]; k -= increment){arr[k + increment] = arr[k];}arr[k + increment] = temp;}}}} while (increment > 1);}/*数组生成*/int *RandomArr(int len){int *arr = (int *)malloc(sizeof(int)*len);for (int i = 0; i < len; i++){arr[i] = rand() % 10 + 40;}return arr;}int main(){srand((unsigned)time(NULL));int len = rand() % 5 + 6;int *arr = RandomArr(len);MyPrint(arr, len);ShellSort(arr, len);MyPrint(arr, len);free(arr);system("pause");return EXIT_SUCCESS;}


1 0