0
点赞
收藏
分享

微信扫一扫

C语言实现希尔排序

程序员伟杰 2022-01-15 阅读 49
#include "sort_.h"

void print_array(int *arr, int n)
// 打印数组
{
    if(n==0){
        printf("ERROR: Array length is ZERO\n");
        return;
    }
    printf("%d", arr[0]);
    for (int i=1; i<n; i++) {
        printf(" %d", arr[i]);
    }
    printf("\n");
}

void sort_array(int *arr, int n)
//  编程实现《希尔排序算法》:将乱序序列arr转化为升序序列
//  函数参数:乱序整数数组 数组长度
//  要求输出:调用print_array(int *arr, int n)输出三遍增量排序操作后的序列,以及最终的升序序列
{
 
     int temp;
    int count = 0;
    int xier[3] = {5,2,1};
    for(int i=0;i<3;i++){
        for(int j=xier[i];j<n;j++){
            int index = j;
            int temp = arr[index];
            if(arr[index]<arr[index - xier[i]]){
                while(index - xier[i] >= 0 && temp <arr[index - xier[i]]){
                    arr[index] = arr[index - xier[i]];
                    index -= xier[i];
                }
                arr[index] = temp;
            }
        }
        count++;
            if(count<=3){
                print_array(arr,n);
            }
    }
    print_array(arr,n);

  
}
举报

相关推荐

0 条评论