利用c语言编写程序利用改进后的直接插入排序法对数字进行排序
时间: 2023-07-15 16:13:29 浏览: 107
好的,以下是利用C语言编写程序,利用改进后的直接插入排序法对数字进行排序的示例代码:
```c
#include <stdio.h>
void insertionSort(int arr[], int n) {
// i从1开始,因为第0个元素可以看成一个已排序的序列
for (int i = 1; i < n; i++) {
int temp = arr[i]; // 将待排序元素保存到临时变量中
int j = i - 1;
// 将大于待排序元素的元素后移一位
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp; // 将待排序元素插入到正确位置
}
}
int main() {
int arr[] = {5, 2, 4, 6, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
printf("排序前的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
insertionSort(arr, n);
printf("\n排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
程序中使用了 `insertionSort` 函数来实现改进后的直接插入排序算法。该函数的参数包括待排序的数组 `arr` 和数组的长度 `n`。在函数中,我们使用一个 `for` 循环来遍历待排序序列。对于每个待排序元素,我们将其保存到临时变量 `temp` 中,并将下标 `j` 初始化为该元素的前一个位置。然后,我们使用一个 `while` 循环来将大于待排序元素的元素后移一位,直到找到一个小于或等于待排序元素的元素。最后,我们将待排序元素插入到正确的位置。
在 `main` 函数中,我们首先定义了一个待排序的数组 `arr`,然后使用 `sizeof` 运算符和 `arr[0]` 来计算数组的长度 `n`。然后,我们将数组打印出来,调用 `insertionSort` 函数对数组进行排序,并再次打印排序后的数组。
希望这个示例代码能够帮助你理解改进后的直接插入排序算法及其实现方式。
阅读全文