上面的数字请按照希尔排序,并且有每一步详细的过程,还有它这种算法好在哪里,
不还是要用直接插入排序吗。
【12,2,16,30,8,128,4,10,20,6,18】按照希尔排序
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- threenewbee 2019-02-14 23:11关注
写了一个shell排序,把每一步的输出结果打印了一下
#include <stdio.h> void shell_sort(int array[], int length){ int i; int j; int k; int gap; int temp; for(gap=length/2; gap>0; gap=gap/2){ for(i=0; i<gap; i++){ for (int ii = 0; ii < length; ii++) printf("%d ", array[ii]); printf("\n"); for(j=i+gap; j<length; j=j+gap){ if(array[j] < array[j - gap]){ temp = array[j]; k = j - gap; while(k>=0 && array[k]>temp){ array[k + gap] = array[k]; k = k - gap; } array[k + gap] = temp; } } } } } int main() { int arr[] = {12,2,16,30,8,128,4,10,20,6,18}; shell_sort(arr, 11); for (int ii = 0; ii < 11; ii++) printf("%d ", arr[ii]); printf("\n"); return 0; }
12 2 16 30 8 128 4 10 20 6 18
12 2 16 30 8 18 4 10 20 6 128
12 2 16 30 8 18 4 10 20 6 128
12 2 10 30 8 18 4 16 20 6 128
12 2 10 20 8 18 4 16 30 6 128
12 2 10 20 6 18 4 16 30 8 128
4 2 6 20 10 18 12 16 30 8 128
4 2 6 8 10 16 12 18 30 20 128
2 4 6 8 10 12 16 18 20 30 128如果不理解,这里有动画过程,自己看看吧
https://en.wikipedia.org/wiki/Shellsort本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
- ¥15 MCNP里如何定义多个源?
- ¥20 双层网络上信息-疾病传播
- ¥50 paddlepaddle pinn
- ¥20 idea运行测试代码报错问题
- ¥15 网络监控:网络故障告警通知
- ¥15 django项目运行报编码错误
- ¥15 STM32驱动继电器
- ¥15 Windows server update services
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏