用c实现利用希尔排序思想实现一系列1000以内的正整数的排序。 【输入形式】第1行为增量序列的个数;第2行为每个增量;第3行开始输入若干1000以内的正整数,-1结束输入。 【输出形式】先输出排序前的原始数据,再输出每趟希
时间: 2024-06-13 08:09:40 浏览: 12
```c
#include <stdio.h>
void shellSort(int arr[], int n) {
int gap, i, j, temp;
for (gap = n / 2; gap > 0; gap /= 2) {
for (i = gap; i < n; i++) {
temp = arr[i];
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}
int main() {
int n, i, j, k, gap, temp;
scanf("%d", &n);
int a[1000];
for (i = 0; i < n; i++) {
scanf("%d", &gap);
for (j = gap; j < 1000; j++) {
temp = a[j];
for (k = j; k >= gap && a[k - gap] > temp; k -= gap) {
a[k] = a[k - gap];
}
a[k] = temp;
}
}
printf("排序前的原始数据:\n");
for (i = 0; i < 1000; i++) {
printf("%d ", a[i]);
if (a[i] == -1) {
break;
}
}
printf("\n");
shellSort(a, i);
printf("排序后的数据:\n");
for (j = 0; j < i; j++) {
printf("%d ", a[j]);
}
printf("\n");
return 0;
}
```
--相关问题--:
1. 希尔排序的时间复杂度是多少?
2. 希尔排序和插入
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)