#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;
}
``
使用c语言帮我写一个程序要求如下:1随机输入n个两位整数构造一个查找表2输入一个整数利用顺序查找法在查找表中查找该整数是否存在。若查找成功返回该整数在表中的位置;查找失败则返回03对查找表按递增顺序进行排序。4输入一个整数利用折半查找法在有序表中查找该整数是否存在。若查找成功返回该整数在表中的位置;查找失败则返回0。

原文地址: https://www.cveoy.top/t/topic/fF4Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录