希尔排序
来源:互联网 发布:旅行团乐队知乎 编辑:程序博客网 时间:2024/06/10 15:31
#include<stdio.h>/**基于插入排序修改的希尔排序**/void InsertSort(int k[], int n){int i, j, temp;int gap = n; //本来跨度是一,现在我们将跨度变成n; 初始化为n。do{gap = gap/3 + 1; for(i = gap; i< n; i++) //将i=1修改为i=gap; { if (k[i]<k[i-gap]) //每次修改都是i-gap { temp = k[i]; for(j=i-gap; k[j]>temp; j -=gap) //前一个元素变成gap之前。如果temp元素小于gap之前那么就将 { k[j+gap]=k[j]; } k[j+gap] = temp; } }}while(gap >1);}int main() { int i, a[10] = {5,2,6,0,3,4,1,4,8}; InsertSort(a,10); for(i = 0;i<10;i++) { printf("%d\n",a[i]); } return 0; }
希尔排序的画法是如何呢?
希尔排序仅仅是高级一点的插入排序而已。
考题上只直到画第一趟就OK了。按照增量来比较和插入排序一样!
i = 1 增量是4 那么 j = 5. 循环着排。
那么空间复杂度就是O(1)
时间复杂度 书上说的是n(log2n)^2
0 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 初学Java day one
- Python自学笔记之七、浅读IO复用
- mac下强迫症安装python小坑
- 什么是脚本?
- 使用Freeimage库时报错的解决方法
- 希尔排序
- hdu 2010 水仙花数
- ZOJ - 3498 Javabeans
- Log
- 2017计划
- 【JZOJ 3693】慎二的随机数列(seq)
- 浅谈Serializable与Parcelable
- POJ 3904 Sky Code 已被翻译
- vue-resource Content-Type is not allowed by Access-Control-Allow-Headers in preflight response