首页 > 其他分享 >二分查找——C语言描述

二分查找——C语言描述

时间:2023-02-03 22:15:04浏览次数:52  
标签:二分 int 22% C语言 ------- ---------- 查找 printf Test

二分查找——C语言描述

目录

0 测试用例框架

https://blog.csdn.net/m0_59469991/article/details/127137119?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127137119%22%2C%22source%22%3A%22m0_59469991%22%7D

1 定义

​ 对半查找。

2 代码

/*BinarySearch*/
//int Arr01[] = {0, 1, 2, 3, 4, 5};
//2, 1, 5, 7, {0}
int BinarySearch(int *Arr, int Num, int SearchValue) {
	int Low = 0;
	int High = Num - 1;
	int Mid = 0;

	if (Arr == NULL || Num <= 0 || SearchValue < Arr[Low] || SearchValue > Arr[High]) {
		return -1;
	}

	while (Low <= High) {
		Mid = (Low + High) / 2;
		
		if (SearchValue < Arr[Mid]) {
			High = Mid - 1;
		} else if (SearchValue > Arr[Mid]) {
			Low = Mid + 1;
		} else {
			return Mid;
		}
	}
	
	return -1;
}

4 测试用例

/*TestBinarySearch*/
void TestCmpRes(int CmpRes01, int Res01) {
	TestNum++;

	if (CmpRes01 != Res01) {
		FaildNum++;
	}
	else {
		PassNum++;
	}
}

void TestBinarySearch(void) {
	/*Test01: Normal*/
	int Arr01[] = { 0, 1, 2, 3, 4, 5 };
	int SearchValue01 = 2;
	int Res01 = 0;
	int CmpRes01 = 2;
	int Num01 = 6;

	/*Test02: Bounary*/
	int Arr02[] = { 0, 1, 2, 3, 4, 5 };
	int SearchValue02 = 0;
	int Res02 = 0;
	int CmpRes02 = 0;
	int Num02 = 6;

	/*Test03: Bounary*/
	int Arr03[] = { 0, 1, 2, 3, 4, 5 };
	int SearchValue03 = 5;
	int Res03 = 0;
	int CmpRes03 = 5;
	int Num03 = 6;

	/*Test04: Don't exit*/
	int Arr04[] = { 0, 1, 2, 3, 4, 5 };
	int SearchValue04 = 7;
	int Res04 = 0;
	int CmpRes04 = -1;
	int Num04 = 6;

	/*Test05: Only a Mem and exit*/
	int Arr05[] = { 0 };
	int SearchValue05 = 0;
	int Res05 = 0;
	int CmpRes05 = 0;
	int Num05 = 1;

	printf("-------Test start----------\n");
	InitNum();

	/*Test01*/
	printf("\n-------Test 01----------\n");
	Res01 = BinarySearch(Arr01, Num01, SearchValue01);
	TestCmpRes(CmpRes01, Res01);

	/*Test02*/
	printf("\n-------Test 02----------\n");
	Res02 = BinarySearch(Arr02, Num02, SearchValue02);
	TestCmpRes(CmpRes02, Res02);

	/*Test03*/
	printf("\n-------Test 03----------\n");
	Res03 = BinarySearch(Arr03, Num03, SearchValue03);
	TestCmpRes(CmpRes03, Res03);

	/*Test04*/
	printf("\n-------Test 04----------\n");
	Res04 = BinarySearch(Arr04, Num04, SearchValue04);
	TestCmpRes(CmpRes04, Res04);

	/*Test05*/
	printf("\n-------Test 05----------\n");
	Res05 = BinarySearch(Arr05, Num05, SearchValue05);
	TestCmpRes(CmpRes05, Res05);

	/*Test Result*/
	printf("\n-------Test result----------\n");
	TestResult();
}

打印结果

-------Test start----------

-------Test 01----------

-------Test 02----------

-------Test 03----------

-------Test 04----------

-------Test 05----------

-------Test result----------

Print test result;

TestNum = 5, PassNum = 5, FaildNum = 0

标签:二分,int,22%,C语言,-------,----------,查找,printf,Test
From: https://www.cnblogs.com/meditatorss/p/17090559.html

相关文章

  • 冒泡排序——C语言描述
    冒泡排序——C语言描述目录冒泡排序——C语言描述0测试用例框架1定义2代码4测试用例0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?......
  • 二分查找
    #include<iostream>usingnamespacestd;intbinarySearch(intarr[],intlow,inthigh,intkey){if(low>high){return-1;}intmid=low......
  • C语言-猜数游戏
    整理文件发现以前写的C语言猜数游戏1-效果演示2-程序#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){ srand(time(0)); intnumber=rand......
  • C语言笔记
    分支语句(选择结构)1.if语句悬空else(else只会与离他最近的未匹配的if匹配!)就近原则养成习惯,每个if后加{}intmain(){ inta=0; intb=2; if(a==1) if(b==......
  • 【C语言】程序的翻译环境和执行环境
    ......
  • C语言-链表流星雨(EsayX)
    刷B站看到的,做个玩玩。IDE:VisualStudio2022。依赖EsayX图形库1-效果 2-程序/*链表流星雨单文件版本依赖EsayX图形库*/#include<stdio.h>#include<stdlib.h>......
  • C语言小项目-通讯录的实现
    contact.h#defineMAX1000#defineMAX_NAME20#defineMAX_SEX5#defineMAX_TELE12#defineMAX_ADDR30enumopt{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT};......
  • 枚举以及联合体--C语言版
    枚举的定义枚举顾名思义就是一一列举。把可能的取值一一列举。一周的星期一到星期日是有限的7天,可以一一列举。性别有:男、女、保密,也可以一一列举。月份有12个月,也可以......
  • POJ 2253 Frogger(并查集+二分||Dijkstra)
    DescriptionFreddyFrogissittingonastoneinthemiddleofalake.SuddenlyhenoticesFionaFrogwhoissittingonanotherstone.Heplanstovisither,but......
  • Codeforces1201 B Maximum Median (二分)
    Description:Youaregivenanarray aa of nn integers,where nn isodd.Youcanmakethefollowingoperationwithit:Chooseoneoftheelementsofthearray......