首页 > 代码库 > 希尔排序
希尔排序
测试代码如下。
/** @hushunfeng 希尔排序 从小到大排列*/#include<stdio.h>//单次希尔排序,即一次直接插入排序//array为需要排序的数组//dk为希尔排序算法中的增量void shellInsert(int *array,int dk) { //--- int i; int j; int arraySize = 10; for(i=0;(i+dk)<arraySize;i++) { //待插入的数据进行缓存 int temp = array[i+dk]; for(j=i;j>=0;j-=dk) { if(array[j+dk]<array[j]) { array[j+dk] = array[j]; } else break; } //将temp的值放到腾空出来的位置中 array[j+dk] = temp; }}//iArray为增量序列数组void shellSort(int *array) { int i; int iArraySize = 5; int iArray[] = {9,5,3,2,1}; for(i=0;i<iArraySize;i++) { shellInsert(array,iArray[i]); } }//mainvoid main() { int i; int array[] = {49,38,65,97,76,13,27,49,55,04}; int arraySize = 10; //--- shellSort(array); //排序后输出 for(i=0;i<arraySize;i++) { printf("%d\n",array[i]); }}
希尔排序:需要经过好几轮的插入排序,每轮选取一个增量△。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。