【ShellSort】希尔排序

来源:互联网 发布:mac os 图片编辑 编辑:程序博客网 时间:2024/05/29 11:45

希尔排序的主要思想是:使数组中任意间隔为 h 的元素都是有序的。

改进插入排序只能一次一步的挪动元素; 使交换相隔 h 的元素成为可能;

下面是C语言实现(采用唐纳德步长为3实现):


#include <cstdio>#include <cstring>char a[100];int length;void swap(char* s, int i, int j){    char temp = s[i];    s[i] = s[j];    s[j] = temp;}void shellsort(){    int h = 1;    while(h < length/3)      h = 3*h + 1;    while(h >= 1)    {for(int i = h; i < length; i++){    for(int j = i; j >= h; j -= h){if(a[j] < a[j-h])  swap(a, j, j-h);else  break;    }}h = h/3;    }}void show(){    printf("%s\n", a);}int main(){    scanf("%s", a);    length = strlen(a);    shellsort();    show();    return 0;}


0 0
原创粉丝点击