算法测试(课上测试)

任务详情

  1. Ubuntu下支持哪些C语言的排序算法,查找算法?你是怎么得到的?提交截图
  2. 针对下面的数组,调用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;
}
  • 结果 (没成功运行)
posted @ 2021-12-13 11:42  修勾  阅读(13)  评论(0编辑  收藏  举报