排序【3】之希尔排序的C语言实现
2017-12-12 17:06
148 查看
希尔排序也称为“缩小增量排序”,基本原理是:首先将待排序的元素分为多个子序列,使得每个子序的元素个数相对较少,对各个子序分别进行直接插入排序,待整个待排序序列“基本有序后”,再对所有元素进行一次直接插入排序。
具体步骤如下:
程序:
具体步骤如下:
(1)选择一个步长序列t1, t2, ..., tk,满足ti > tj(i <j),tk = 1。 (2)按步长序列个数k,对待排序序列进行k趟排序。 (3)每趟排序,根据对应的步长ti,将待排序的序列分割成ti个子序列,分别对各个子序列进行直接插入排序。
程序:
#include <stdio.h> void ShellSort(int *a, int len) { int i, j; int gap; int temp; for(gap = len/2; gap > 0; gap = gap / 2) { for(i = gap; i < len; i++) { temp = a[i]; for(j = i - gap; j >= 0; j-=gap) { if(temp < a[j]) { a[j + gap] = a[j]; } else { break; } } a[j + gap] = temp; } } } int main() { int i = 0; int a[10] = {23,45,6,24,65,87,2,5,7,56}; int length = sizeof(a)/sizeof(a[0]); ShellSort(a, length); for(i = 0; i < length; i++) { printf("%d ", a[i]); } printf("\n"); return 0; }
相关文章推荐
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 排序系列之(4)希尔排序及C语言实现
- C语言实现直接插入排序和希尔排序
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- 排序之二:希尔排序(C语言实现)
- (排序)用C语言实现的希尔排序(插入排序)
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- C语言实现选择排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序-java实现的选择/插入/希尔排序
- 程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)
- java实现排序(3)-希尔排序
- 排序(1)---------选择排序(C语言实现)
- 合并排序(C语言实现)
- 各种排序的C语言实现
- 排序(5)---------高速排序(C语言实现)
- 排序算法总结(一)---- 直接插入排序,希尔排序(java实现)
- C语言实现顺序表的增删查改以及排序
- 常见排序c语言实现
- 排序(4)---------希尔(shell)排序(C语言实现)