使用C语言编写的希尔排序算法的代码,用于对数组A[8] = {16,25,5,8,13,1,10,3}进行降序排列
时间: 2024-11-15 18:20:17 浏览: 4
Java常用排序算法程序员必须掌握的8大排序算法Java开
希尔排序(Shell Sort)是一种插入排序的改进版本,它通过将待排序的数据分隔成若干组,每组内部先进行插入排序,然后逐步缩小组距,直到整个序列有序。以下是使用C语言实现的希尔排序示例,针对给定数组A[8]进行降序排列:
```c
#include <stdio.h>
// 希尔排序函数,采用增量序列{7, 5, 3, 1}
void shellSort(int arr[], int n) {
for (int gap = 7; gap > 0; gap--) { // 开始时选择较大的步长gap
for (int i = gap; i < n; i++) {
int temp = arr[i]; // 保存当前元素
int j;
// 将arr[i]按照gap进行插入排序
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
arr[j] = temp; // 插入到正确的位置
}
}
}
// 主函数测试
int main() {
int A[] = {16, 25, 5, 8, 13, 1, 10, 3};
int n = sizeof(A) / sizeof(A[0]);
printf("Original array:\n");
for (int i = 0; i < n; i++)
printf("%d ", A[i]);
shellSort(A, n);
printf("\nSorted array in descending order:\n");
for (int i = 0; i < n; i++)
printf("%d ", A[i]);
return 0;
}
阅读全文