【Data_Structure笔记9】查找算法之【顺序查找和折半查找】
2017-08-27 20:37
357 查看
#include<iostream> using namespace std; typedef int ElemType; typedef struct LNode { ElemType* data; int iLength; }LNode,LinkList; /****************************************************************************************************************** 文件说明: 【顺序查找算法】 基本说明: 【1】【顺序查找算法】:又称为【线性查找】,主要用于在【线性表】中进行查找。 【2】【顺序查找算法】一般分为【对无序顺序表】查找和对【有序顺序表】的查找 优缺点分析: 【1】【顺序查找算法的缺点】是:当线性表的表长过长时,算法的平均查找长度较大,效率较低 【2】【顺序查找算法的优点】是:对顺序表中数据元素的【存储】没有什么要求,【顺序存储】和【链式存储】都可以 【3】需要注意的一点事,对于使用【链式存储】的【线性表】,只能使用【顺序查找】 *******************************************************************************************************************/ template<typename ElemType>ElemType SeqSearch(ElemType arrayT[],int iKey,int iLength) { for(int index=0;index<iLength;index++) { if(arrayT[index]==iKey) { return index; } } return -1; } /****************************************************************************************************************** 模块说明: 【折半查找算法】 基本说明: 【1】【折半查找】,又称为【二分查找】,它仅适用于【有序的顺序表】 【2】基本的思路是: 【1】首先,将给定值key与表中中间位置的元素比较,若相等,查找成功,返回该元素的存储位置; 【2】若不相等,则所需查找的元素只能在中间元素以外的【前半部分】或【后半部分】。 *******************************************************************************************************************/ template<typename ElemType>int BinarySearch(ElemType arrayT[],ElemType key,int iLenght) { int iLow = 0; int iHigh= iLenght-1; int iMid = 0; while(iLow<=iHigh) { iMid = (iLow+iHigh)/2; //【1】取中间位置 if(arrayT[iMid]==key) //【2】查找成功,则返回元素所在的位置 { return iMid; } else if(arrayT[iMid]>key) //【3】从前半部分继续查找 { iHigh = iMid-1; } else //【4】从后半部分继续查找 { iLow = iMid + 1; } } return -1; } /****************************************************************************************************************** 模块说明: 控制台应用程序的入口点 *******************************************************************************************************************/ int main(int argc,char* argv[]) { int arrayT[10] = {0,1,2,3,4,5,6,7,8,9}; //std::cout<<"【NOTICE】关键字3的数组索引位置是:"<<SeqSearch<int>(arrayT,3,10)<<std::endl; std::cout<<"【NOTICE】关键字3的数组索引位置是:"<<BinarySearch<int>(arrayT,3,10)<<std::endl; std::system("pause"); return 0; }
相关文章推荐
- 【数据结构----笔记1】查找算法之【顺序查找和折半查找】
- 【Data_Structure笔记10】查找算法之【哈希查找或散列表查找法】
- 【Data_Structure笔记11】查找算法之【二叉排序树】
- 【Data_Structure笔记12】查找算法之【基于二叉排序树的查找】
- 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
- 二分法查找(折半查找)算法学习笔记
- 数据结构学习笔记-2.顺序查找与折半查找比较
- 【Data_Structure笔记5】排序算法之【选择类排序】
- 【Data_Structure笔记7】排序算法之【链式基数排序】
- PHP 顺序查找和二分查找(也叫做折半查找)算法
- 二分法查找(折半查找)算法学习笔记
- 【Data_Structure笔记3】排序算法之插入排序常见的三种算法
- 【Data_Structure笔记4】排序算法之【交换类排序】
- C语言查找算法之顺序查找、二分查找(折半查找)
- 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
- 【Data_Structure笔记6】排序算法之【二路归并排序】
- 【Data_Structure笔记8】排序算法之【选择排序---堆排序】
- 【Data_Structure笔记1】线性表的顺序存储【顺序表】
- 算法笔记_017:递归执行顺序的探讨(Java)
- 顺序查找 && 折半查找