当前位置: 首页 > news >正文

云南品牌网站开发/seo团队管理系统

云南品牌网站开发,seo团队管理系统,wordpress用什么系统好,wordpress下载文件查找方法 最简单的查找——顺序查找,即从数组第一个元素开始,一个一个顺序查下去直到找到或查到最后一个元素为止。数据排列有序时,可以采用对半查找(binary search)。算法的执行效率比顺序查找高。散列查找&#xff1…

查找方法

  • 最简单的查找——顺序查找,即从数组第一个元素开始,一个一个顺序查下去直到找到或查到最后一个元素为止。
  • 数据排列有序时,可以采用对半查找(binary search)。算法的执行效率比顺序查找高。
  • 散列查找:散列(hash)查找是最快的查找方法。前文介绍的两种查找方法都是将需查找的关键字值与表中的数据元素的关键字值进行比较而达到查找的目的。如果能找到一个函数 f(key),将关键字经过函数的运算转换为数据表中的位置,直接将数据元素插入在该位置上。在查找中可直接取用该位置的数据元素。这样的组织称为散列,利用散列技术查找的方法称为散列查找,散列查找是一种直接查找。亦用音译称哈希查找。

二分查找也属于顺序表查找范围,二分查找也称为折半查找。二分查找(有序)的时间复杂度为O(LogN)。

那么什么是二分查找呢?二分查找的基本思想是, 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到找到为止。

从二分查找的定义我们可以看出,使用二分查找有两个前提条件:

1,待查找的列表必须有序,这里使用递归快排来使产生的随机无序数组有序。

2,必须使用线性表的顺序存储结构来存储数据。

下面是c++实现代码。


#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <ros/ros.h>using namespace std;void Qsort(std::vector<int> &set, int low, int high);
int Partition(std::vector<int> &set, int low, int high);
void quickSort(std::vector<int> &s, int l, int r);
bool binaryfind(const std::vector<int> &set, const int x, int low, int high,int &position);void Qsort(std::vector<int> &set, int low, int high)
{if(low < high){int pivot = Partition(set, low, high);Qsort(set, low, pivot - 1);Qsort(set, pivot + 1, high);}
}int Partition(std::vector<int> &set, int low, int high)
{int pivotkey=set.at(low);while (low < high){while (low < high && set.at(high) <= pivotkey)high--;set.at(low) = set.at(high);while (low < high && set.at(low) >= pivotkey)low++;set.at(high) = set.at(low);}set.at(low) = pivotkey;return low;
}void quickSort(std::vector<int> &s, int l, int r)
{if(l<r){int low=l;int high=r;int pivot = s[l];while(low<high){while(low<high&&s[high]>= pivot)high--;if(low<high)s[low++] = s[high];while(low<high&&s[low]<pivot)low++;if(low<high)s[high--] = s[low];}s[low]=pivot;quickSort(s, l, low - 1);quickSort(s, low + 1, r);}
}bool binaryfind(const std::vector<int> &set, const int x, int low, int high,int &position)
{while (low <= high && set[position] != x){if (x < set[position]){low = position + 1;}else if (x > set[position]){high = position - 1;}else{break;}position = (low + high) / 2 ;}if (set.at(position) == x){return true;}else{return false;}
}int main(int argc, char *argv[])
{std::vector<int> set;set.push_back(24);set.push_back(3);set.push_back(5);set.push_back(4);set.push_back(6);set.push_back(1);set.push_back(0);set.push_back(7);set.push_back(8);set.push_back(10);set.push_back(20);set.push_back(9);set.push_back(11);//    item: 24  0
//    item: 20  1
//    item: 11  2
//    item: 10  3
//    item: 9   4
//    item: 8   5
//    item: 7   6
//    item: 6   7
//    item: 5   8
//    item: 4   9
//    item: 3   10
//    item: 1   11
//    item: 0   12
//    quickSort(set, 0, set.size()-1);Qsort(set, 0, set.size()-1);while(ros::ok){for(int i =0; i < set.size(); i++){std::cout << "item: " << set.at(i) << std::endl;}int str;std::cin >> str;int item = (int)str;int position;bool inside = binaryfind(set, item, 0, set.size(), position);std::cout<<typeid(position).name()<<' '<<typeid(item).name() << " " << typeid(inside).name() << std::endl;if (!inside){std::cout << "## item: " << item << "  not in set, inside status: "<< boolalpha <<inside << ". at position of "<< position << "\n\n" << std::endl;std::vector<int>::iterator iter = set.begin()+position + 1 ;set.insert(iter, (int)item);}else{std::cout << "## item: " << item << "  in set, inside status: "<< boolalpha <<inside << ". at position of "<< position << "\n\n" << std::endl;}}return 0;
}


http://www.jmfq.cn/news/5054671.html

相关文章:

  • 最好的网站推广/西点培训班一般要多少学费
  • 网站导航三角怎么做/腾讯企点app
  • 北京网站建设公司报价/什么软件可以推广自己的产品
  • java毕业设计网站建设/互联网营销师在哪里报名
  • 长春网站策划/武汉网站关键词推广
  • 外贸网络做推广公司/seo排名培训
  • asp网站开发平台/新闻今天最新消息
  • 北京网站设计排名/厦门百度推广开户
  • 广州网页模板建站/做网页的网站
  • 怎么根据已有网站做新网站/seo是什么岗位的缩写
  • 销售网站制作/网络推广策划方案模板
  • 博山政府网站建设哪家专业/长沙官网优化公司
  • wordpress登陆注册插件/seo关键词快速排名软件
  • 为什么要进行网站建设/临沂做网站推广的公司
  • 百度广告联盟看广告赚钱/优化设计七年级下册数学答案
  • 云服务器网站解析/seo怎么做推广
  • 微信知彼网络网站建设/上海网站快速排名优化
  • 惠州网站建设学校/网络营销的推广手段
  • 图片素材网站哪个最多/东莞seo优化案例
  • 阿里大鱼 wordpress/优化手机流畅度的软件
  • 如何做服装微商城网站建设/免费推广网址
  • 政务网站建设工作总结/揭阳新站seo方案
  • 网站改版的前端流程/sem代运营托管公司
  • 珠海外贸网站建设/合肥seo关键词排名
  • 做网站 哪些公司/站长工具查询网站信息
  • 局域网网站域名怎么做/百度地图人工客服电话
  • 做淘宝客网站 首选霍常亮/武汉seo和网络推广
  • 网站上传小马后怎么做/nba排名最新
  • pc网站建设怎么样/谷歌优化方法
  • 江苏省网站备案查询/站长工具seo下载