ShellSort(希尔排序)
2017-06-13 22:15
471 查看
希尔排序
希尔排序是是插入排序的一种更高效的改进版本希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。
//平均时间复杂度O(n^1.3) //空间复杂度O(1) //最优时间复杂度O(n) //最坏时间复杂度O(n^2) //不稳定 #include <stdio.h> void shellSort(int a[], int len){ int gap, i, j; int temp; for (gap = len / 2; gap > 0; gap /= 2) { for (i = gap; i < len; i++) { temp = a[i]; for (j = i - gap; j >= 0 && a[j] > temp; j -= gap) { a[j+gap] = a[j]; } a[j+gap] = temp; } } } int main() { int a[8]; printf("Please input the number:\n"); for(int i=0;i<8;i++) scanf("%d",&a[i]); shellSort(a, 8); for (int i=0; i<8; i++) { printf("%d\n",a[i]); } return 0; }
相关文章推荐
- 03_希尔排序(ShellSort)
- 排序算法——希尔排序(Shell Sort)
- 希尔排序(shellsort)
- 排序算法之希尔排序(Shellsort)
- Java 希尔排序(Shell Sort)
- 算法总结JS版(四)—— 希尔排序(Shell Sort)
- C:C的排序算法:希尔排序(ShellSort)
- 希尔排序(ShellSort程序完整版)
- 常用算法——希尔排序(Shell Sort)
- 算法----希尔排序(shell sort)
- 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 排序之希尔排序(Shell Sort)
- 希尔排序(shell sort)
- 无聊写排序之 ---- 希尔排序(ShellSort)
- [排序] 希尔排序(Shell Sort)
- 希尔排序(Shell Sort)
- 希尔排序(shellsort)算法实现
- C++、C#、java算法学习日记05----希尔排序(ShellSort)
- 数据算法之希尔排序(shellSort)的Java实现