希尔排序算法的实现

在理解插入排序算法的基础上稍加调整,增加一个分组的维度就可以实现希尔排序算法

#include <stdio.h>
#define DATA_ARRAY_SIZE 10
typedef int DataType;

void DisplayArray(DataType data[], int size)
{
    
    
    for(int i=0; i<size; i++) {
    
    
        printf("%d ", data[i]);
    }
    printf("\n");
    
    return;
}

void ShellSort(DataType src[], const int size);

int main()

{
    
    
    DataType srcData1[DATA_ARRAY_SIZE] = {
    
    3,2,4,6,9,1,21,43,29,59};
    ShellSort(srcData1, DATA_ARRAY_SIZE);
    DisplayArray(srcData1, DATA_ARRAY_SIZE);
    return 0;
}

void ShellSort(DataType src[], const int size)
{
    
    
    DataType val;
    int distance = size / 2;
    while (distance > 0) {
    
    
        for (int i = distance; i < size; i++) {
    
    
            int j = i - distance;
            val = src[i];
            while (j >= 0 && val > src[j]) {
    
    
                src[j + distance] = src[j];
                j -= distance;
            }
            src[j + distance] = val;    
        }
        distance /= 2;
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37546257/article/details/121130663