使用c语言帮我写一个程序要求如下:1随机产生n个两位整数构造一个查找表2输入一个整数利用顺序查找法在查找表中查找该整数是否存在。若查找成功返回该整数在表中的位置;查找失败则返回03对查找表按递增顺序进行排序。4输入一个整数利用折半查找法在有序表中查找该整数是否存在。若查找成功返回该整数在表中的位置;查找失败则返回0。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM 100 // 生成随机数的范围
// 顺序查找函数
int sequential_search(int arr[], int n, int key) {
for (int i = 0; i < n; i++) {
if (arr[i] == key) {
return i+1; // 返回位置
}
}
return 0; // 没有找到
}
// 折半查找函数
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+1; // 返回位置
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return 0; // 没有找到
}
// 输出函数
void print_array(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// 冒泡排序函数
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
srand(time(NULL)); // 随机数种子
int n;
printf("请输入随机数的个数:");
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
arr[i] = rand() % MAX_NUM + 10; // 生成两位数随机数
}
printf("生成的随机数为:");
print_array(arr, n);
int key;
printf("请输入要查找的整数:");
scanf("%d", &key);
int pos = sequential_search(arr, n, key);
if (pos) {
printf("在查找表中的位置为:%d\n", pos);
} else {
printf("没有找到该整数\n");
}
bubble_sort(arr, n); // 排序
printf("排序后的数组为:");
print_array(arr, n);
printf("请输入要查找的整数:");
scanf("%d", &key);
pos = binary_search(arr, n, key);
if (pos) {
printf("在有序表中的位置为:%d\n", pos);
} else {
printf("没有找到该整数\n");
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/fF4F 著作权归作者所有。请勿转载和采集!