用C语言编写 随机生成1到10000的10000个随机数,并用插入排序进行排序,再用二分查找查找其中的某一个数
时间: 2024-02-18 22:04:34 浏览: 81
C语言快速排序与二分查找算法示例
好的,我可以为您提供代码实现。以下是使用C语言编写的程序,可以随机生成1到10000的10000个随机数,然后使用插入排序进行排序,最后使用二分查找查找其中的某一个数。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10000
void insert_sort(int arr[], int n);
int binary_search(int arr[], int n, int key);
int main()
{
int arr[SIZE];
int i, key, index;
// 生成随机数
srand(time(NULL));
for (i = 0; i < SIZE; i++) {
arr[i] = rand() % 10000 + 1;
}
// 排序
insert_sort(arr, SIZE);
// 查找
printf("请输入要查找的数:");
scanf("%d", &key);
index = binary_search(arr, SIZE, key);
if (index == -1) {
printf("未找到该数\n");
} else {
printf("该数的下标为:%d\n", index);
}
return 0;
}
// 插入排序
void insert_sort(int arr[], int n)
{
int i, j, temp;
for (i = 1; i < n; i++) {
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
// 二分查找
int binary_search(int arr[], int n, int key)
{
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
```
这个程序首先使用 `srand` 函数初始化随机数生成器,然后使用 `rand` 函数生成10000个随机数。接着使用 `insert_sort` 函数进行排序,最后使用 `binary_search` 函数进行查找。您只需要输入要查找的数即可。
阅读全文