排序:希尔排序
2017-08-05 11:46
127 查看
介绍了2种希尔排序的实现方式。
#include <stdio.h> // 交换函数 void swap (int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } // 打印数组 void printA (int *a, int len) { int i; for (i = 0; i < len; i++) { printf ("%4d", a[i]); } printf ("\n"); } // 希尔排序 int main1() { int a[10] = {9,6,8,0,3,5,2,4,7,1}; int len = sizeof(a) / sizeof(a[0]); int i,j,get; int d = len; // d代表每一次的步长 do { d = d / 3 + 1; for (i = d; i < len; i++) { get = a[i]; j = i - d; while (j >= 0 && a[j] > get) { a[j+d] = a[j]; j -= d; } a[j+d] = get; } }while (d > 1); printA (a, len); return 0; } int main() { int a[10] = {9,6,8,0,3,5,2,4,7,1}; int len = sizeof(a) / sizeof(a[0]); int i,j,get; int d = 0; // d代表每一次的步长 while (d < len) { d = d * 3 + 1; // 0 1 4 13 } while (d >= 1) { for (i = d; i < len; i++) { get = a[i]; j = i - d; while (j >= 0 && a[j] > get) { a[j+d] = a[j]; j -= d; } a[j+d] = get; } d = (d-1) / 3; // 4 1 0 } printA (a, len); return 0; }
相关文章推荐
- 快排,冒泡排,选择排序,希尔排序
- 排序之希尔排序
- 插入排序、希尔排序、堆排序
- 快速排序、堆排序、希尔排序实现
- java数据结构排序之希尔排序实现
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 排序算法的C++ && Python实现---希尔排序(缩小增量排序)
- 算法之直接插入排序和希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 排序(二)——关于希尔排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 数据结构实验之排序六:希尔排序
- 三种常用的插入排序算法--直接插入排序、二分插入排序、希尔排序
- 各种排序总结(二)之--归并排序、希尔排序、插入排序
- 对c语言系统库函数、堆排序、希尔排序、折半插入排序、快速排序消耗时间的比较
- 数据结构实验之排序六:希尔排序
- 插入排序,折半插入排序,希尔排序的代码
- 数据结构实验之排序六:希尔排序
- 插入排序之希尔排序