查找-之顺序表查找-(数据的排列无序)

简介: 静态查找表:只做查找操作的查找表动态查找表:在查找过程中还做插入和删除数据元素的操作

查找--摘要

83865649208f48488ed9c47836c63cf9_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

静态查找表:只做查找操作的查找表

动态查找表:在查找过程中还做插入和删除数据元素的操作

查找时可改变数据元素之间的关系以获得较高的查找性能,将查找集合组织成表、树结构。也即是从数据的存储方式作出改进。

还有从算法层面做出改进:二分、插值、斐波那契查找等

顺序查找:线性查找,从表的第一个逐个开始和待查找元素比较,直到最后一个(暴力破解)

//C

//a为待查数组,n为待查数组长度,key为待查找值  

int Sequential_Search(int *a,int n, int key)

{

  int i;

  for(i=1;i<=n,i++)

  {

     if(a[i]==key)

        return i;

  }

 

 return 0;

}

顺序查找的优化

不需要每次让i和n比较 ,在数据较多时效率提升

//C

int Sequential_Search2(int *a,int n, int key)

{

int i;

a[0]=key;

i=n;

while(a[i]!=key)

{

  i--;

}

 return i;

}

时间复杂度:O(n)

空间复杂度:O(1)

目录
相关文章
|
8月前
|
设计模式 算法 Java
【数据结构和算法】删掉一个元素以后全为 1 的最长子数组
这是力扣的 1493 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。又又又是一道滑动窗口的典型例题,可以帮助我们巩固滑动窗口算法。这道题很活灵活现,需要加深对题意的变相理解。给你一个二进制数组nums,你需要从中删掉一个元素。 请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。 如果不存在这样的子数组,请返回 0 。
116 1
|
5月前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
3月前
数组元素同时查找插入
数组元素同时查找插入
26 0
|
8月前
【力扣】83. 删除排序链表中的重复元素、82. 删除排序链表中的重复元素Ⅱ
【力扣】83. 删除排序链表中的重复元素、82. 删除排序链表中的重复元素Ⅱ
|
8月前
|
算法 测试技术 C#
C++二分查找或并集查找:交换得到字典序最小的数组
C++二分查找或并集查找:交换得到字典序最小的数组
|
算法
【算法专题突破】二分查找 - 在排序数组中查找元素的第一个和最后一个位置(17)
【算法专题突破】二分查找 - 在排序数组中查找元素的第一个和最后一个位置(17)
73 0
27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组(双指针遍历)上
27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组(双指针遍历)上
73 1
|
存储 算法
数组算法:倒置,查找,插入,删除
数组算法:倒置,查找,插入,删除
90 0
|
算法 C语言 C++
【二分查找】34. 在排序数组中查找元素的第一个和最后一个位置
二分查找是一种高效的查找算法,其时间复杂度为 O(log n)。在许多情况下,我们需要在一个有序数组中找到某个目标值的搜索范围。本文将介绍一种基于二分查找的搜索范围查找算法,该算法能够快速找到目标值在数组中的起始和结束位置。
81 0