C++折半查找学习文档

C++折半查找学习文档:

u42062343961470993737fm253fmtautoapp138fPNG

 

需要的软件:Visual Studio 2022 (C++)

  1. 折半查找定义:

在计算机中,折半查找,也称二分搜索。它是一种在有序数组中查找某一特定元素的搜索算法。

  1. 折半查找实现原理:

搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半

实现图:

f70ac2df82e546ef9da92c9b5941b037

 

实例1:

//Copyright @ 2022 www.sunzishaokao.com | 孙子烧烤知识分享站 版权所有//

//作者:孙子烧烤 Email;admin@sunzishaokao.com//

//C++折半查找//

#include<iostream>

#include <algorithm>

using namespace std;

int main()

{

    //1.折半查找是针对有数组的。

    int num[10] = { 10,20,30,40,50,60,70,80,90,100 };

    int N = 10;//数组中元素的个数

    int low = 0;//这是数组第一个元素的序号

    int high = N - 1;//记录最后一个元素的序号

    int position = -1;//保存查找元素位置

    int mid;

    //输入过程

    cout << "请输入一个数值:";

    int value;//输入值的变量

    cin >> value;//输入值

    while (low < high)//循环查找

    {

        mid = (low + high) / 2;//求中间元素序号

        //判断过程

        if (num[mid] == value)

        {

            position = mid;

            break;

        }

        else if(num[mid]>value)

        {

            high = mid - 1;

        }

        else if (num[mid] < value)

        {

            low = mid + 1;

        }

    }

    //输出过程

    if (position < 0)

    {

        cout << "404" << endl;

        cout << "您输入的相关信息未在系统中查找到!" << endl;

    }

    else

    {

        cout << "该元素位置是:" << position << endl;

    }

}

实例2:

//Copyright @ 2022 www.sunzishaokao.com | 孙子烧烤知识分享站 版权所有//
//作者:孙子烧烤 Email;admin@sunzishaokao.com//
//C++折半查找|2//
#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
	int num[5];
	for (int i = 0; i < 5; i++)
	{
		cin >> num[i];
	}
	//排序
	sort(num, num + 5);
	//查找
	char* postion = find(num, num + 5, n);
	int po = postion - num;
	//输出
	cout << "位置是" << po<<endl;
}

 

© 版权声明
THE END
喜欢就支持一下吧
点赞14W+打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容