用c语言写 随机生成10000个1到10000的随机数,并分别用插入排序和快速排序进行排序并打印输出,再用二分查找查找其中一个数
时间: 2024-02-19 18:57:43 浏览: 119
好的,以下是一个示例代码,包括生成随机数、插入排序和快速排序以及二分查找:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARRAY_SIZE 10000
void insertion_sort(int arr[], int size);
void quick_sort(int arr[], int left, int right);
int binary_search(int arr[], int left, int right, int target);
int main() {
int arr[ARRAY_SIZE];
int i, target, index;
// 生成随机数
srand(time(NULL));
for (i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % 10000 + 1;
}
// 插入排序
insertion_sort(arr, ARRAY_SIZE);
printf("Insertion sort:\n");
for (i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 快速排序
quick_sort(arr, 0, ARRAY_SIZE - 1);
printf("Quick sort:\n");
for (i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 二分查找
printf("Enter a number to search: ");
scanf("%d", &target);
index = binary_search(arr, 0, ARRAY_SIZE - 1, target);
if (index == -1) {
printf("Not found.\n");
} else {
printf("Found at index %d.\n", index);
}
return 0;
}
void insertion_sort(int arr[], int size) {
int i, j, temp;
for (i = 1; i < size; i++) {
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
void quick_sort(int arr[], int left, int right) {
int i = left, j = right, temp, pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if (left < j) {
quick_sort(arr, left, j);
}
if (i < right) {
quick_sort(arr, i, right);
}
}
int binary_search(int arr[], int left, int right, int target) {
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
```
这段代码首先使用 `srand()` 函数和 `rand()` 函数生成10000个1到10000的随机数,然后分别使用插入排序和快速排序对这些随机数进行排序,并使用二分查找查找其中的一个数。
阅读全文