0
点赞
收藏
分享

微信扫一扫

希尔排序算法思想及代码

诗与泡面 2022-03-24 阅读 42
排序算法

希尔排序

一、希尔排序算法思想

二、代码

#include<stdio.h>
#include<stdlib.h>

#define MAX 10

void insert(int arr[],int n){
    int i,j,k,gap;//gap为步长
    int temp;//用来保存 比较值
    for(gap = n/2;gap > 0;gap/=2){//步长减小
        for(i = 0;i < gap;++i){//变量 i 为每次分组的第一个元素下标 
            for(j = i + gap;j < n;j = j + gap){//对步长为gap的元素进行直插排序,当gap为1时,就是直插排序
                temp = arr[j];
                k = j - gap;
                while(k >= 0 && temp <= arr[k]){
                    arr[k+gap] = arr[k];
                    k = k - gap;
                }
                arr[k + gap] = temp;
            }
        }
    }
}

int main()
{
    int arr[MAX] = {13,76,43,9,5,98,100,99,32,14};
    int n = MAX;

    insert(arr,n);

    for(int i = 0;i < n;i++){//遍历数组
        printf("%-5d",arr[i]);
    }
    printf("\n");
    return 0;
}
举报

相关推荐

0 条评论