算法6---查找

两种最基本的查找

1顺序查找

 1 void search(int a[],int n,int target)
 2 {
 3     int flag=0;
 4     for (int i = 0; i < n; i++)
 5     {
 6         if (a[i]==target)
 7         {
 8
 9             flag=1;
10         }
11     }
12     if (flag==1)
13     {
14         printf("using the first method  find it!\n");
15     }
16     else
17         printf("using the first method can‘t find it!\n");
18 }

2 二分查找

 1 int  search2(int a[],int n,int target)
 2 {
 3     int first=0;
 4     int last=n-1;
 5
 6     while(first<last)
 7     {
 8         int mid=(first+last)/2;
 9         if (a[mid]==target)
10         {
11
12             return 1;
13         }
14         else if (a[mid]>target)
15         {
16             last=mid-1;
17         }
18         else
19             first=mid+1;
20     }
21     return -1;
22 }
时间: 2024-10-14 21:27:13

算法6---查找的相关文章

数据结构和算法之 查找

线性表查找算法 顺序查找 折半查找(线性表必须是已经排序好的) 1 /**折半查找 2 * @param obj 3 * @param value 4 */ 5 public static void halfSort(int[] obj,int value){ 6 int len=obj.length;//获取数组的长度 7 int min=0; 8 int max=len-2; 9 while (min<=max) { 10 int middle=(min+max)/2;//获取数组中间元素的

Java中常用的查找算法——顺序查找和二分查找

Java中常用的查找算法——顺序查找和二分查找 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg

程序员必须要掌握的排序算法以及查找方法

程序员必须要掌握的排序算法以及查找方法 经典的排序算法要一个一个的弄懂.借个图,列出学习提纲. 三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表 2016-04-17 09:08:04

三种不同查找算法实际查找性能的对比

   一.查找问题的介绍 查找问题就是在给定的集合(或者是多重集,它允许多个元素具有相同的值)中找寻一个给定的值,我们称之为查找键.有许多查找算法可供选择,其中既包括直截了当的顺序搜索,也包括效率极高但应用受限的折半查找,还有那些将原集合用另一种形式表示以方便查找的算法.最后一类算法对于现实应用具有特别重要的价值,因为它们对于大型数据库的信息存取来说是不可或缺的. 对于查找来说,没有一种算法在任何情况下都是最优的.有些算法速度比其他算法快,但需要较多的存储空间:有些算法速度非常快,但仅适用于有序

simhash算法实现--查找文件相似度

一.Simhash简介 SimHash是用来网页去重最常用的hash方法,速度很快.Google采用这种算法来解决万亿级别的网页去重任务. SimHash算法的主要思想是降维.将高维的特征向量映射成一个低维的特征向量,通过两个向量的Hamming Distance来确定文章是否重复或者高度近似. 在simhash的发明人Charikar的论文中并没有给出具体的simhash算法和证明,"量子图灵"得出的证明simhash是由随机超平面hash算法演变而来的. 参考文献:<Dete

查找算法-二分查找

查找算法-二分查找 标题 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 过程 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找

数据结构与算法(c++)——查找二叉树与中序遍历

查找树ADT--查找二叉树 定义:对于树中的每个节点X,它的左子树中的所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项. 现在给出字段和方法定义(BinarySearchTree.h) #include <queue> class BinarySearchTree { private: struct Node { int value; Node* left; Node* right; }; Node* root; void insert(Node*, int); void trav

[经典算法] 二分查找

题目说明: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,失败返回-1. 题目解析: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它.其算法流程如下: 1.一开始,范围覆盖整个数组. 2

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

STL_算法_查找算法(find、find_if)

C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if(); 注意: 1.假设是已序区间,能够使用区间查找算法 2.关联式容器(set,map)有等效的成员函数find();时间复杂度O(log(n)) 3.string 有等效的成员函数find(); **********************/ #include<iostream> #inclu