Java順序查找算法詳解
更新時間:2022年08月03日 09:35:57 作者:Aricl.
順序查找又稱線性查找,主要用于在線性表中進行查找。順序查找通常分為對一般的無序線性表的順序查找和對按關鍵字有序的順序表的順序查找,下面我們來一探究竟
一、查找的基本概念
在講順序查找法之前先來認識一些關于查找的基本概念。
1.查找表
- 由同一類型的數(shù)據(jù)元素(或記錄)所構成的集合
- 數(shù)據(jù)元素之間存在完全松散的關系
- 非常靈活的數(shù)據(jù)結(jié)構
2.關鍵字
- 關鍵字是數(shù)據(jù)元素(或記錄)中某個數(shù)據(jù)項的值,可以用它標識一個數(shù)據(jù)元素(或記錄)
- 若關鍵字可以唯一地標識一個記錄,則稱之為主關鍵字
- 反之,若用以識別若干記錄的關鍵字稱之為次關鍵字
- 注意,當元素只有一個數(shù)據(jù)項時,其關鍵字即為該數(shù)據(jù)元素的值
3.查找
- 查找是根據(jù)給定的某個值,在查找表中確定一個關鍵字等于給定值的記錄或者數(shù)據(jù)元素
- 若表中存在該記錄則查找成功,可返回整個記錄的信息或者指示該記錄在查找表中的位置
- 若表中不存在該記錄則查找失敗,可返回一個“空”記錄或者“空”指針
4.動態(tài)查找表與靜態(tài)查找表
- 若在查找的過程中對表做修改操作(如插入或刪除),則相應的表稱之為動態(tài)查找表,否則為靜態(tài)查找表
- 即動態(tài)查找表的表結(jié)構本身是在查找的過程中所動態(tài)生成的,即在創(chuàng)建表時,對于給定值,若表中存在其關鍵字所對應的記錄,則查找成功返回;否則插入關鍵字等于給定值的記錄
5.平均查找長度
- 為確定記錄在查找表中的位置,需要和給定值進行比較的關鍵字個數(shù)的期望值,稱為查找算法在查找成功時的平均查找長度(Average Searche Length, ASL)
- 由于查找算法的基本運算是關鍵字之間的比較操作,故可以使用ASL來衡量評估查找算法的性能
- 也可以采用一種很直觀的評估方法——程序執(zhí)行所消耗的時間。文章傳送門
二、順序查找法
1.概念
順序查找(Sequential Search)的查找過程為:從表的一端開始,依次將記錄的關鍵字和給定的值進行比較,若某記錄的關鍵字和給定值相等,則為查找成功;反之,若掃描整個表之后,仍然未找到關鍵字和給定值相等的記錄,則為查找失敗。
2.實踐
在給定的無序數(shù)組中查找給定的值
public class DayOne { public static void main(String[] args) { int []a={8,7,45,99,65,23,21,100}; int key1=23; int key2=666; DayOne dayone=new DayOne(); System.out.print("數(shù)組元素:"); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } System.out.println(); System.out.println("查找key1的結(jié)果:"+dayone.search(a,key1)); System.out.println("查找key2的結(jié)果:"+dayone.search(a,key2)); } public String search(int []a,int key){ //初始化變量 int i=0; //掃描整個數(shù)組 while(i<a.length){ //將數(shù)組元素一一與給定值key進行比較 if(key==a[i]) return "查找成功! "+key+"是數(shù)組的第"+(i+1)+"個元素";//匹配成功則返回 i++;//當前未匹配成功將索引下標i后移一位繼續(xù)比對 } //如果循環(huán)遍歷已經(jīng)結(jié)束了還未找到給定值key則表明數(shù)組中不存在該值,查找失敗 return "查找失敗,數(shù)組中不存在該元素!"; } }
執(zhí)行結(jié)果
到此這篇關于Java順序查找算法詳解的文章就介紹到這了,更多相關Java順序查找內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關文章
Kafka單節(jié)點偽分布式集群搭建實現(xiàn)過程詳解
這篇文章主要介紹了Kafka單節(jié)點偽分布式集群搭建實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11Springboot整合實現(xiàn)郵件發(fā)送的原理詳解
SpringBoot集成郵件服務非常簡單,通過簡單的學習即可快速掌握郵件業(yè)務類的核心邏輯和企業(yè)郵件的日常服務,本文給大家分享Springboot整合實現(xiàn)郵件發(fā)送的原理,一起看看吧2021-06-06