用C语言编写输出{9, 8, 7, 6, 5, 4, 3, 2, 1}的直接插入排序过程及排序结果;
时间: 2023-08-19 22:31:13 浏览: 49
好的,下面是用 C 语言编写输出 {9, 8, 7, 6, 5, 4, 3, 2, 1} 的直接插入排序过程及排序结果的代码:
```
#include <stdio.h>
void insertionSort(int arr[], int n) {
int i, j, key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
// 输出排序过程
printf("第%d步排序结果:", i);
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
int main() {
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
printf("初始序列:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
insertionSort(arr, n);
printf("排序结果:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上述代码中,我们通过 `insertionSort` 函数实现了直接插入排序算法,并在排序过程中输出了每一步排序的结果。最后,我们在 `main` 函数中调用 `insertionSort` 函数,并输出最终的排序结果。
代码执行结果如下:
```
初始序列:9 8 7 6 5 4 3 2 1
第1步排序结果:8 9 7 6 5 4 3 2 1
第2步排序结果:7 8 9 6 5 4 3 2 1
第3步排序结果:6 7 8 9 5 4 3 2 1
第4步排序结果:5 6 7 8 9 4 3 2 1
第5步排序结果:4 5 6 7 8 9 3 2 1
第6步排序结果:3 4 5 6 7 8 9 2 1
第7步排序结果:2 3 4 5 6 7 8 9 1
第8步排序结果:1 2 3 4 5 6 7 8 9
排序结果:1 2 3 4 5 6 7 8 9
```
可以看到,最终的排序结果为 {1, 2, 3, 4, 5, 6, 7, 8, 9}。