用c语言编写一个程序,分别用直接插入排序和折半插入排序实现对线性表中数据元素的排序(假设线性表里的数据元素类型为int)。主程序内输入数据元素的值。
时间: 2024-02-17 12:02:16 浏览: 83
好的,这是一个简单的C语言程序,它包括直接插入排序和折半插入排序。以下是程序代码:
```
#include <stdio.h>
void insert_sort(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--;
}
arr[j + 1] = key;
}
}
void binary_insert_sort(int arr[], int n) {
int i, j, key, left, right, mid;
for (i = 1; i < n; i++) {
key = arr[i];
left = 0;
right = i - 1;
while (left <= right) {
mid = (left + right) / 2;
if (key < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
for (j = i - 1; j >= left; j--) {
arr[j + 1] = arr[j];
}
arr[left] = key;
}
}
int main() {
int arr[100], n, i;
printf("请输入数据元素个数(不超过100):");
scanf("%d", &n);
printf("请输入数据元素:\n");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
insert_sort(arr, n);
printf("直接插入排序后的元素为:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
binary_insert_sort(arr, n);
printf("折半插入排序后的元素为:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们先定义了两个函数:insert_sort和binary_insert_sort,用来实现直接插入排序和折半插入排序。在主函数中,我们通过用户输入来获得要排序的数据元素,然后调用这两个函数进行排序,并输出排序后的结果。
希望这个程序对你有帮助!
阅读全文