#include <stdio.h> void insertionSort(int arr[], int n) { int i, key, j; 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; } } int main() { int n, arr[1000]; int i, j; scanf("%d", &j); scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } insertionSort(arr, n); for (i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
时间: 2024-03-07 10:49:30 浏览: 106
#include <stdio.h>
4星 · 用户满意度95%
这段代码实现了插入排序算法。具体实现过程如下:
1. 首先定义了一个 insertionSort 函数,该函数接受一个整数数组 arr 和数组长度 n 作为参数。
2. 在 insertionSort 函数中,定义了三个变量 i、key 和 j。其中,变量 i 用于遍历数组,变量 key 用于存储当前遍历到的元素,变量 j 则用于在已排序的数组中寻找 key 的插入位置。
3. 在 for 循环中,从数组的第二个元素开始遍历,因为第一个元素默认为已排序的元素。
4. 将当前遍历到的元素存储到 key 变量中。
5. 在 while 循环中,从已排序的数组的最后一个元素开始寻找 key 的插入位置。如果已排序的元素比 key 大,则将该元素向右移动一位。
6. 将 key 插入到已排序的数组中。
7. 在 main 函数中,首先定义了一个整数变量 j,用于接收输入的第一个数。
8. 接着定义了一个整数数组 arr 和一个整数变量 n,用于接收需要排序的数组和数组长度。
9. 使用 for 循环读取需要排序的数组。
10. 调用 insertionSort 函数进行排序。
11. 使用 for 循环输出排序后的数组。
12. 最后程序结束并返回 0。
需要注意的是,在 main 函数中使用 scanf 函数读取输入数据时,第一个读取的数是 j,但是并没有使用。如果输入的第一个数没有其他用处,可以将其去掉,直接从第二个数开始读取即可,如下所示:
```c
int main() {
int n, arr[1000];
int i, j;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
insertionSort(arr, n);
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
阅读全文