vlambda博客
学习文章列表

C语言版-希尔排序算法

#include<string.h>#include<stdlib.h>#include<stdio.h>
//打印void Print(int *array,int size);//希尔排序void ShellSort(int *array, int size);

//打印void Print(int *array, int size){ int i = 0; for (i = 0; i < size; i++) { printf("%d ", array[i]); } printf("\n");}//希尔排序void ShellSort(int *array, int size){ int gap = 3; int i = 0; //记录排序次数 int j = 1; //要插入的位置的前一个位置 int pos = 0; int k = 0; while (gap) { for (i = 0; i < size; i++) { //记录要存入的元素 k = array[i + gap]; //下标超过数组的范围返回 if (i + gap >= size) { break; } //从被插入的元素的前gap个元素开始比较 //pos = i + gap -gap pos = i; while (k < array[pos] && pos>=0) { //元素后移 array[pos + gap] = array[pos]; //下标 pos = pos - gap; } array[pos + gap] = k; } printf("第%d次排序后:",j++); Print(array, size); gap--; }}