精华内容
下载资源
问答
  • 顺序查找算法

    2020-06-13 18:41:34
      顺序查找算法比较简单,在一个线性表中,按照从前往后或者从后往前的顺序依次查找,如果查找到关键字和给定值相等,则返回给定值的位置,查找成功;如果查找值最后一个元素仍未找到,则查找失败。   有一种...

    简介

      顺序查找算法比较简单,在一个线性表中,按照从前往后或者从后往前的顺序依次查找,如果查找到关键字和给定值相等,则返回给定值的位置,查找成功;如果查找值最后一个元素仍未找到,则查找失败。
      有一种改进的算法,引入了哨兵的思想,所谓哨兵就是将关键字用一个数组位置去存储,保证在循环的过程中不必判断数组是否越界,因为执行到最后一个元素时,一定会跳出循环。在一定程度上优化了普通查找算法。

    // 顺序查找
    
    #include <stdio.h>
    
    int SequentialSearch(int data[],int length, int key);
    int SequentialSearchSentry(int data[], int length, int key);
    
    int main(){
    	
    	int data_sequential[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    	int data_sequential_sentry[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    	
    	printf("%d \n",SequentialSearch(data_sequential, 10, 10));
    	printf("%d \n",SequentialSearchSentry(data_sequential_sentry, 11, -2));
    	return 0;
    } 
    
    
    //顺序查找的一般形式 
    //在 data 顺序表中查找到元素 key,返回下标(从 1 开始) 
    //返回 0 则查找失败 
    int SequentialSearch(int data[],int length, int key){
    	
    	int i  = 0;
    	
    	for(i = 0; i < length; ++i){
    		if(key == data[i]){
    			return i + 1;
    		}
    	} 
    	
    	return 0;	//查找失败 
    }
    
    
    
    //有哨兵的顺序查找 
    //data[0] 是哨兵元素 
    //在 data 顺序表中查找到元素 key,返回下标(从 1 开始) 
    //下标从有效数据元素开始计算,即第一个数组元素 data[0] 不参与计算 
    //返回 0 则查找失败
    //length:整个数组的长度,不是有效的数据元素长度 
    int SequentialSearchSentry(int data[], int length, int key){
    
    	int i = length - 1;		//从尾部向前查找 
    	
    	data[0] =  key;
    	
    	while(key != data[i]){
    		--i;
    	} 
    	
    	return i;	//返回查找的结果 
    }
    
    

      顺序查找算法整个思路和实现过程都比较简单,理解思路和哨兵思想即可。

    展开全文
  • import java.util.Scanner; ... * 顺序查找算法 * * @author Administrator * */ public class SearchFun { final static int N = 15; // 顺序查找算法实现 public static in...
    
    
    package com.xj.www.search;
    import java.util.Scanner;
    /**
     * 顺序查找算法
     *
     * @author xiongjing
     *
     */
    public class SearchFun {
          final static int N = 15;
          // 顺序查找算法实现
          public static int search(int[] a, int n, int x) {
                int i, f = -1;
                for (i = 0; i < n; i++) {
                      if (x == a[i]) {
                            f = i;
                            break;
                      }
                }
                return f;
          }
          // 程序主入口
          public static void main(String[] args) {
                int x, n, i;
                int[] shuzu = new int[N];
                for (i = 0; i < N; i++) {
                      shuzu[i] = (int) (100 + Math.random() * (100 + 1));
                }
                System.out.print("顺序查找算法演示! \n");
                System.out.println("数据序列: \n");
                for (i = 0; i < N; i++) {
                      System.out.print(" " + shuzu[i]);
                }
                System.out.print("\n\n");
                System.out.println("请输入要查找的数:");
                @SuppressWarnings("resource")
                Scanner input = new Scanner(System.in);
                x = input.nextInt();
                n = search(shuzu, N, x);
                if (n < 0) {
                      System.out.println("没找到数据:" + x);
                } else {
                      System.out.println("数据:" + x + "位于数组的第" + (n + 1) + "个元素处。");
                }
          }
    }
    
    
    展开全文
  • C语言分块查找算法索引顺序查找算法 例如采用分块查找法在有序表 111218283956698996122135146156256298 中查找关键字为 96 的元素 査找特定关键字元素个数为 15要求用户输入有序表各元素程序输出査找成功与否若成功...
  • 顺序查找算法C语言源程序,顺序查找算法比较简单,即从数据序列的第一个元素开始,进行一一匹配操作,匹配成功则返回匹配结果。
  • 顺序查找算法和二分查找算法

    千次阅读 2015-01-11 23:32:50
    顺序查找算法和二分查找算法
    顺序查找算法
    int lin_Search(const int array[],int size,int key)
    {
        int index;
    
        for (index = 0;index <= size-1;++index) 
           if (key==array[index]) return index;
            
        return -1;
     }

    二分查找算法

    int bin_Search(const int array[],int low,int high,int key)
    {
        int index;
    
        while ( high>= low) 
        { 
         index = (low+high)/2;
         if (key==array[index])
           {
            return index;
           }
         else if (key > array[index])
            low = index+1;
         else high = index-1;
        }
      
        return -1;
    }

    或者

    int binarySearch(int[] E,int first,int las,int K)
    {
    if (last<first)
    index = -1;
    else
    {
    int mid=(first+last)/2;
    if(K== E[mid])
    index = mid;
         else if(K<E[mid])
    index = binarySearch(E,first,mid-1,K);
         else
    index = binarySearch(E,first,mid-1,K);
    return index;
    }
    }
    


    展开全文
  • 36 顺序查找算法及程序实现;顺序查找算法的处理过程 假定在数组d中有n个数据查找键已经存储在变量key中其处理过程是从数组d的第1个元素d(1)开始依次判断各元素的值是否与查找键key相等若某个数组元素d(i)的值等于key...
  • 主要介绍了基于JavaScript实现的顺序查找算法,结合实例形式分析了javascript顺序查找的原理、实现技巧与相关注意事项,需要的朋友可以参考下
  • 查找——线性表顺序查找算法

    千次阅读 2015-12-05 15:55:42
    *文件名称: 线性表顺序查找算法.cpp *作 者: 郑兆涵 *查找——线性表顺序查找算法 */ 问题:对线性表顺序查找算法进行分析 编程代码: //线性表顺序查找算法 #include #define MAXL 100 typedef int KeyTy
    /*
    *Copyright (c) 2015 , 烟台大学计算机学院
    *All right resvered .
    *文件名称: 线性表顺序查找算法.cpp
    *作    者: 郑兆涵
    *查找——线性表顺序查找算法
    */


    问题:对线性表顺序查找算法进行分析


    编程代码:

    //线性表顺序查找算法
    #include <stdio.h>
    #define MAXL 100
    typedef int KeyType;
    typedef char InfoType[10];
    typedef struct
    {
        KeyType key;                //KeyType为关键字的数据类型
        InfoType data;              //其他数据
    } NodeType;
    typedef NodeType SeqList[MAXL];     //顺序表类型
    
    int SeqSearch(SeqList R,int n,KeyType k)
    {
        int i=0;
        while (i<n && R[i].key!=k)  //从表头往后找
            i++;
        if (i>=n)
            return 0;
        else
            return i+1;
    }
    int main()
    {
        int i,n=10;
        int result;
        SeqList R;
        KeyType a[]= {2,3,1,8,5,4,9,0,7,6},x=9;
        for (i=0; i<n; i++)
            R[i].key=a[i];
        result = SeqSearch(R,n,x);
        if(result>0)
            printf("序列中第 %d 个是 %d\n",result, x);
        else
            printf("木有找到!\n");
        return 0;
    }
    

    输出结果:


    学习心得:

            被查找的对象是由一组元素组成的表或文件,而每个元素由若干哥数据项组成,假设每个元素都有一个能唯一标识该元素的关键字,在这种条件下,查找的定义是:给定一个值k,在含有n个元素的表中找出关键字等于k的元素.若找到,则查找成功,返回该元素的信息或该元素在表中的位置;否则查找失败,返回相关的指示信息.

    线性表顺序查找算法分析:

            查找与数据的存储有关,线性表{a1,a2,....,an}有顺序和链式两种存储结构.作为顺序表存储时实现顺序查找算法.顺序查找是一种最简单的查找方法.它的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k值相等,则查找成功;若扫描结束,扔未找到关键字等于k的元素,则查找失败.顺序查找算法(在顺序表R[0..n-1]中查找关键字为k的元素,成功是返回找到的元素的逻辑序号,失败时返回0):

    #define MAXL 100
    typedef int KeyType;
    typedef struct
    {
        KeyType key;                //KeyType为关键字的数据类型
        InfoType data;              //其他数据
    } NodeType;
    typedef NodeType SeqList[MAXL];     //顺序表类型<pre name="code" class="cpp">int SeqSearch(SeqList R,int n,KeyType k)
    {
        int i=0;
        while (i<n && R[i].key!=k)  //从表头往后找
            i++;
        if (i>=n)
            return 0;
        else
            return i+1;
    }
    
    

            首先定义顺序表的类型,再定义一个SeqSearch()函数实现顺序查找.在SeqSearch(SeqList R,int n,KeyType k)中,其中是在具有n个数据元素R的SeqList中查找值为k的过程.在函数进行运算过程中,首先是通过while判断,当i<n个数据元素的时候,并且R[i].key!=k,也就是说当i在数组规定的长度内,并且当关键字的值不等于k的时候,进行循环i++.最后再进行判断当i>=n的时候,返回0,失败;当i<n时也就是找到了R[i].key=k,则返回i+1,i为逻辑顺序,则返回i+1是得到了物理顺序.此成功时的平均查找长度为O(n).     






    展开全文
  • 查找排序算法的C++实现在vs2013环境下实现折半查找算法带哨兵站顺序查找算法冒泡排序含有顺序查找算法、带哨兵站顺序查找、折半查找算法、冒泡排序#include#include#define MAX 100#define MaxSize 100typedef int ...
  • 顺序查找算法练习

    2019-12-23 21:10:42
    顺序查找算法练习 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 792 (219 users) Total Accepted: 236 (210 users) Special Judge: No Description 在一个顺序表中查找某个关键字是否存在。 Input 输入...
  • //顺序查找算法 #include <stdio.h> int search(int arr[],int key){ int i; for(i=9;i>=0;i--) if(arr[i]==key) return i; } int main(){ int a[10]; int i; for(i=1;i<10;i++) a[i]=i;//1...
  • 顺序查找:就是从一个集合的第一个元素开始遍历,一直到找到队尾为止,返回查找的下标,因此遍历的结果为:可能找到元素,返回元素下标,可能遍历到队尾仍然找不到元素... * 顺序查找算法  * @author gaojingsong...
  • 顺序查找算法及程序实现;顺序查找;顺序查找的流程图;例题顺序查找;1首先在通用声明事件里定义数组d变量为全局变量 Dim d(1 To 10) As Integer Dim i, key As Integer 2程序一运行生成10个3位整数显示在标签1中 ...
  • 折半查找算法带哨兵站顺序查找算法冒泡排序含有顺序查找算法、带哨兵站顺序查找、折半查找算法、冒泡排序 #include #include #define MAX 100 #define MaxSize 100 typedef int DataType; typedef ...
  • 顺序查找算法概述顺序查找算法是在一个已知无序(或有序)队列中找出关键字相同的数的具体位置。顺序查找算法原理 让关键字和队列中的数从最后一个开始逐个比较,直到找出与给定关键字相同的数为止。如果扫描结束已...
  • 主要介绍了C++ 实现带监视哨的顺序查找算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 上一篇博客讲了有关于查找的概念及顺序查找算法,这次我们再讲解一种新的静态查找算法,大家还记得什么是静态查找吗?相信大家应该记得,如果大家印象不太深刻,可以看一下上一篇博客:【数据结构周周练】025 查找...
  • 本文为“选考VB算法专题系列讲座6顺序查找算法”视频配套的导学案,请同学们先完成导学案再收看视频。明天将推送“选考VB算法专题系列讲座6顺序查找算法”视频,敬请期待!顺序查找算法导学案一题目1. 在某次单元...
  • 1、算法介绍(1)遍历序列与查找值比较,相等返回所在下标(2)未找到返回-12、代码实现2.1、golangpackage mainimport ("fmt")func main() {slice := []int{5, 3, 12, 54, 23, 12, 6, 9, 19}key := 54index := ...
  • 文章目录一、顺序查找算法二、实例:查找随机生成数 本系列文章通过 1000(一篇文章表示 1 个实例) 个实例 ,为读者提供较为详细的练习题目,以便读者举一反三,深度学习。本系列的文章涉及到 Python 知识点包括:...
  • 通过前面对静态查找表的介绍,...顺序查找的实现静态查找表用顺序存储结构表示时,顺序查找的查找过程为:从表中的最后一个数据元素开始,逐个同记录的关键字做比较,如果匹配成功,则查找成功;反之,如果直到表中...
  • 三郎数据结构算法学习笔记:顺序查找算法查找算法介绍运行结果源代码 查找算法介绍 根据下表等索引按照先后顺序查找的算法 如果找到了,就提示找到,并给出下标值 运行结果 源代码 package com.atguigu.search; ...
  • 1.顺序查找算法顺序查找算法比较简单,就是从数据序列中的第1个元素开始,从头到尾依次查找,直到查找到所要的数据或搜索完整个数据序列。顺序查找主要针对少量的,无规则的数据。2.java代码的顺序查找算法实现...
  • 若要查找一个序列中是否存在某个元素,一般可以采用遍历的方法查找。例如:arr = [12,46,25,43,58,7,37,5,80,34,105,82]v = int(input("输入你要查找的数"))ok = Falsefor e in arr:if e==v:ok = Truebreakif ok:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,368
精华内容 3,747
关键字:

顺序查找算法