C语言实现二分插入排序算法
时间: 2023-09-29 15:02:48 浏览: 42
b'c\xe8\xaf\xad\xe8\xa8\x80\xe5\xae\x9e\xe7\x8e\xb0\xe5\xa4\x9a\xe5\x8a\x9f\xe8\x83\xbd\xe8\xae\xa1\xe7\xae\x97\xe5\x99\xa8\xe6\x95\xb0\xe6\x8d\xae\xe7\xbb\x93\xe6\x9e\x84\xe4\xb8\x8e\xe7\xae\x97\xe6\xb3\x95' 的意思是 "如何实现多功能计算器数据结构与算法"。
相关问题
C语言代码实现二分插入排序算法
下面是用 C 语言实现二分插入排序算法的代码示例:
```c
#include <stdio.h>
void binaryInsertionSort(int arr[], int n) {
int i, j, key, low, high, mid;
for (i = 1; i < n; i++) {
key = arr[i];
low = 0;
high = i - 1;
while (low <= high) {
mid = (low + high) / 2;
if (key < arr[mid])
high = mid - 1;
else
low = mid + 1;
}
for (j = i - 1; j >= low; j--)
arr[j + 1] = arr[j];
arr[low] = key;
}
}
int main() {
int arr[] = {5, 2, 8, 3, 1};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
binaryInsertionSort(arr, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
这段代码实现了二分插入排序算法,通过调用 `binaryInsertionSort` 函数将数组按升序排序。在 `main` 函数中,我们定义了一个整数数组 `arr`,然后计算数组的长度 `n`。接着,我们打印原始数组,调用 `binaryInsertionSort` 函数对数组进行排序,并最后打印排序后的数组。
运行这段代码,输出结果如下:
```
Original array: 5 2 8 3 1
Sorted array: 1 2 3 5 8
```
可以看到,原始数组经过二分插入排序后得到了升序排序的结果。
二分查找插入排序C语言
二分查找是一种高效的搜索算法,用于在有序数组中查找目标元素的位置。插入排序是一种简单直观的排序算法,通过逐个将元素插入已排序的部分来完成排序。下面是二分查找和插入排序的C语言实现:
1. 二分查找:
```c
#include <stdio.h>
int binarySearch(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1; // 目标元素不存在
}
int main() {
int arr[] = {2, 4, 6, 8, 10};
int n = sizeof(arr) / sizeof(arr);
int target = 8;
int result = binarySearch(arr, 0, n - 1, target);
if (result == -1) {
printf("目标元素不存在");
} else {
printf("目标元素在数组中的索引为 %d", result);
}
return 0;
}
```