算法测试(课上测试)
任务详情
- Ubuntu下支持哪些C语言的排序算法,查找算法?你是怎么得到的?提交截图
- 针对下面的数组,调用Linux的快速排序或二分查找算法。查找算法查自己的学号。
用随机数函数产生10个1-1000之间的数存到一个数组int arr[11]中, arr[10] = 你学号的后三位。
实践过程
1.在Ubuntu中使用man -k keyword
命令查看
-
排序算法
-
查找算法
2.查找学号
- 代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int binary_search(int key, int a[], int n) {
int low, high, mid, count = 0, count1 = 0;
low = 0;
high = n - 1;
while (low < high) { //査找范围不为0时执行循环体语句
count++; //count记录査找次数
mid = (low + high) / 2; //求中间位置
if (key < a[mid])
high = mid - 1;
else if (key > a[mid])
low = mid + 1;
else if (key == a[mid]) { //当key等于中间值时,证明查找成功
printf("查找成功!\n 查找 %d 次!a[%d]=%d", count, mid, key);
count1++; //count1记录查找成功次数
break;
}
}
if (count1 == 0) //判断是否查找失败
printf("查找失败!");
return 0;
}
int main() {
int i, key, arr[11], n;
srand(time(0));
for (i = 0; i < 10; i++)
arr[i] = rand() % 1000;
arr[10] = 329;
arr[11] = rand() % 1000;
for (i = 0; i < 11; i++)
printf("%d ", arr[i]);
printf("\n");
printf("请输入你想查找的元素:\n");
scanf("%d", &key); //输入要^找的关键字
binary_search(key, arr, n); //调用自定义函数
printf("\n");
return 0;
}
- 结果 (没成功运行)