#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);
}
C语言实现希尔排序
最新推荐文章于 2023-08-22 20:36:27 发布