基本数据结构 -- 希尔排序

来源:互联网 发布:使命召唤5知乎 编辑:程序博客网 时间:2024/05/17 05:53
/********************************************************** * *FileName:shellSort.c *Function:shell sort *Author:kevin *Date:2014-03-12 *Version:1.0 * **********************************************************//********************************************************** 希尔排序的基本思想: 希尔排序又称为缩小增量排序方法。其基本思想是把记录按下标增量d分组, 对每组记录采用直接插入排序方法进行排序,随着增量逐渐减小,所分成的 组包含的记录越来越多,当增量的值减小到1时,整个数据合成为一组, 构成一组有序记录,则完成排序。 **********************************************************/#include <stdio.h>#define SORT_DEBUG 1void print_array(int a[], int n){int i;for(i = 0; i < n; i++){printf("%2d  ", a[i]);}printf("\n");}void shell_sort(int a[], int n){int i, j;int temp;int gap = n/2;while(gap > 0){for(i = gap; i < n; 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;}gap /= 2;}}int main(int args, char *argv[]){int a[] = {75, 87, 68, 92, 88, 61, 77, 96, 80, 72};int n = sizeof(a)/sizeof(a[0]);printf("---------------排序前------------------\n");print_array(a, n);shell_sort(a, n);printf("---------------排序后------------------\n");print_array(a, n);return 0;}

0 0
原创粉丝点击