使用c语言帮我写一个程序要求如下:1随机输入n个两位整数构造一个查找表2输入一个整数利用顺序查找法在查找表中查找该整数是否存在。若查找成功返回该整数在表中的位置;查找失败则返回03对查找表按递增顺序进行排序。4输入一个整数利用折半查找法在有序表中查找该整数是否存在。若查找成功返回该整数在表中的位置;查找失败则返回0。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
void generateTable(int table[], int n);
int searchTable(int table[], int n, int x);
void sortTable(int table[], int n);
int binarySearch(int table[], int n, int x);
int main()
{
int n, table[SIZE], x, pos;
printf("请输入n的值:");
scanf("%d", &n);
generateTable(table, n);
printf("随机构造的查找表为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", table[i]);
}
printf("\n");
printf("请输入要查找的整数:");
scanf("%d", &x);
pos = searchTable(table, n, x);
if (pos > 0) {
printf("%d 在表中的位置是%d\n", x, pos);
} else {
printf("%d 不在表中\n", x);
}
sortTable(table, n);
printf("按递增顺序排列后的查找表为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", table[i]);
}
printf("\n");
printf("请输入要查找的整数:");
scanf("%d", &x);
pos = binarySearch(table, n, x);
if (pos > 0) {
printf("%d 在表中的位置是%d\n", x, pos);
} else {
printf("%d 不在表中\n", x);
}
return 0;
}
// 生成n个两位整数的随机表
void generateTable(int table[], int n)
{
for (int i = 0; i < n; i++) {
table[i] = rand() % 90 + 10;
}
}
// 顺序查找
int searchTable(int table[], int n, int x)
{
for (int i = 0; i < n; i++) {
if (table[i] == x) {
return i + 1;
}
}
return 0;
}
// 冒泡排序
void sortTable(int table[], int n)
{
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (table[j] > table[j + 1]) {
int temp = table[j];
table[j] = table[j + 1];
table[j + 1] = temp;
}
}
}
}
// 折半查找
int binarySearch(int table[], int n, int x)
{
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (table[mid] == x) {
return mid + 1;
} else if (table[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/fF4Q 著作权归作者所有。请勿转载和采集!