算法基础之查找——顺序查找和二分查找
来源:互联网 发布:升级显卡用什么软件 编辑:程序博客网 时间:2024/06/05 23:04
这一节,介绍以数组为载体的查找方法,介绍两种查找方法:顺序查找和二分查找
(1)顺序查找
顺序查找,顾名思义,按照元素索引的顺序进行查找以匹配要查找的目标,是针对无序数组的通用查找手段。
算法思路是:从数组的首个元素开始,逐个匹配数组元素和查找目标,若找到,返回找到的元素索引,若遍历完没有找到,则返回-1。
(2)二分查找
二分查找,又名折半查找,是处理已排序数组的快速查找方式。
算法思路是:每次对数组区间中间的元素和查找目标进行匹配和比较,如果不匹配,根据大小关系选择左区间或者右区间再进行比较,直到区间只剩下一个元素或者匹配为止。若找到(匹配),返回找到的元素索引,若没有找到,则返回-1。
以整型数组为例,给出这两个查找方法的C++实例。
#include<iostream> using namespace std; void QuickSort(int num[],int left,int right){if(left>=right) return;//待排序区间只有一个元素 终止int key,i,j; i=left;//从左往右查找变量j=right;//从右往左查找变量key=num[left];//参考数while(i<j){while(num[j]>=key && j>i) j--;//从右往左查找while(num[i]<=key && i<j) i++;//从左往右查找if(i<j){int tmp=num[i];num[i]=num[j];num[j]=tmp;} //交换}num[left]=num[i];num[i]=key;//参考数归位QuickSort(num,left,i-1);//对i左边区间排序QuickSort(num,i+1,right);//对i右边区间排序}int Search(int num[],int n,int find){for(int i=0;i<n;i++){if(num[i]==find) return i;}return -1;}int BinarySearch(int num[],int n,int find){int left,right,mid;left=0;right=n-1;while(left<=right){mid=left+(right-left)/2;//防止数组越界 不写直接加和if(mid<find) left=mid+1;else if(mid>find) right=mid-1;else return mid;}return -1;} int main() { int num[10]={4,7,1,0,8,9,3,2,5,6}; int find; for(int i=0;i<10;i++) cout<<num[i]<<" ";cout<<endl;//case 1cout<<"输入要查找的数:"<<endl; cin>>find; cout<<"查找的索引为:"<<endl; cout<<Search(num,10,find)<<endl;//case 2cout<<"对数组进行快速排序变为有序数组:"<<endl; QuickSort(num,0,9); for(int i=0;i<10;i++) cout<<num[i]<<" "; cout<<endl; cout<<"输入要查找的数:"<<endl; cin>>find; cout<<"查找的索引为:"<<endl; cout<<BinarySearch(num,10,find)<<endl;system("pause");return 0; }
阅读全文
0 0
- 算法基础之查找——顺序查找和二分查找
- 黑马程序员——Java基础查找算法:顺序查找和二分查找
- 查找算法之顺序查找和二分查找
- 一步一步复习数据结构和算法基础-顺序查找+二分查找
- 顺序查找算法和二分查找算法
- 顺序查找和二分查找算法
- 搜索算法-顺序查找和二分查找
- PHP算法之二分查找和顺序查找
- 查找算法之——二分查找
- 算法——查找之二分查找
- 常见查找算法之—二分查找
- 20151215笔记:查找算法——顺序查找和二分查找
- 查找算法一之顺序查找 二分查找
- 【数据结构】查找算法:二分查找、顺序查找
- 查找算法:二分查找、顺序查找
- 顺序查找和二分查找
- 二分查找和顺序查找
- 顺序查找和二分查找
- 使用malloc/new后free/delete崩溃错误解决
- eclipse中使用java8
- Pixhawk jtag烧写
- Thinking in java中装饰花园OrnamentGarden程序的学习
- idea 快捷键创建main函数
- 算法基础之查找——顺序查找和二分查找
- leetcode N-Queens
- c++ const总结
- UPnP最好关闭
- php 统计一维数组中重复的元素个数
- 操作系统课程设计-二级文件系统,Windows平台版本,c语言
- 在虚拟机中,选中文本就自动复制到剪切板解决方案
- 中国通信市场现状:错综复杂还需理清头绪
- jmeter个人学习之路--badboy录制脚本