void DirecInsSort(int* a, int n) // direct insert sorting { int i, k; for (i=1; i<n; i++) { // 请在此添加代码,补全函数DirecInsSort /********** Begin *********/ /********** End **********/ } }按照从小到大的排列顺序实现直接插入排序。
时间: 2025-05-23 07:21:19 浏览: 13
### C语言实现直接插入排序算法
以下是基于用户需求编写的 `DirecInsSort` 函数的完整代码,用于对数组按从小到大的顺序进行排序:
```c
#include <stdio.h>
// 定义直接插入排序函数 DirecInsSort
void DirecInsSort(int a[], int n) {
for (int i = 1; i < n; i++) { // 遍历数组中的每一个元素
int temp = a[i]; // 将当前元素保存至临时变量
int j = i - 1;
while (j >= 0 && a[j] > temp) { // 找到合适的位置插入
a[j + 1] = a[j]; // 向后移动较大的元素
j--;
}
a[j + 1] = temp; // 插入当前元素到正确位置
}
}
// 测试函数
void printArray(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int main() {
int arr[] = {9, 2, 1, 3, 5, 4, 10, 8, 6, 7}; // 待排序数组
int size = sizeof(arr) / sizeof(arr[0]);
printf("排序前:");
printArray(arr, size);
DirecInsSort(arr, size); // 调用直接插入排序函数
printf("排序后:");
printArray(arr, size);
return 0;
}
```
#### 说明
上述代码实现了直接插入排序的核心逻辑。具体而言:
- 外层循环从第 2 个元素(索引为 1)开始遍历数组[^1]。
- 内部通过 `while` 循环不断比较当前元素与已排序部分的元素大小,并将大于当前元素的值依次向后移动[^2]。
- 当找到合适的插入位置时,将当前元素放入该位置[^3]。
此方法的时间复杂度为 \(O(n^2)\),适用于小型数据集或基本有序的数据集合[^4]。
---
阅读全文
相关推荐


















