C语言代码实现随机输入(或随机产生)30个数,采用顺序、折半查找在排好序的数据中完成查找任务
时间: 2024-05-13 13:17:44 浏览: 46
以下是使用顺序和折半查找在排好序的数据中查找一个数字的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 30
void generateRandomArray(int arr[], int size);
void printArray(int arr[], int size);
void bubbleSort(int arr[], int size);
int linearSearch(int arr[], int size, int target);
int binarySearch(int arr[], int size, int target);
int main()
{
int arr[SIZE];
int target, index;
// 生成随机数组
generateRandomArray(arr, SIZE);
// 排序
bubbleSort(arr, SIZE);
// 输出数组
printf("排序后的数组:\n");
printArray(arr, SIZE);
// 输入要查找的数字
printf("输入要查找的数字:");
scanf("%d", &target);
// 顺序查找
index = linearSearch(arr, SIZE, target);
if (index == -1)
printf("在数组中未找到指定数字\n");
else
printf("在数组中找到了指定数字,下标为 %d\n", index);
// 折半查找
index = binarySearch(arr, SIZE, target);
if (index == -1)
printf("在数组中未找到指定数字\n");
else
printf("在数组中找到了指定数字,下标为 %d\n", index);
return 0;
}
// 生成随机数组
void generateRandomArray(int arr[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
arr[i] = rand() % 100;
}
// 输出数组
void printArray(int arr[], int size)
{
for (int i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
// 冒泡排序
void bubbleSort(int arr[], int size)
{
for (int i = 0; i < size - 1; i++)
{
for (int j = 0; j < size - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 顺序查找
int linearSearch(int arr[], int size, int target)
{
for (int i = 0; i < size; i++)
{
if (arr[i] == target)
return i;
}
return -1;
}
// 折半查找
int binarySearch(int arr[], int size, int target)
{
int left = 0;
int right = size - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
```
该程序首先生成了一个大小为30的随机数组。然后对这个数组进行冒泡排序,以确保它是有序的。
接下来,程序提示用户输入要查找的数字。使用顺序查找和折半查找算法分别在排好序的数组中查找该数字。如果找到了该数字,程序将输出其下标;否则,程序将输出未找到该数字的消息。
阅读全文