经典算法之顺序查找法
生活随笔
收集整理的這篇文章主要介紹了
经典算法之顺序查找法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
活動地址:CSDN21天學習挑戰賽
前言
已經進入八月份了,暑假也正式進入倒計時。本人前段時間在學習前端中移動端部分的微信小程序開發知識,也算勉勉強強能入門(因為沒有前端三件套的基礎,前端居然是從小程序入手的。正在準備補JavaScript語法知識,不然后面的uni-app框架真的學起來有點困難);下面計劃復習數據結構與算法,正好借參加本次活動的機會,和群內一群大佬一起學習、打卡、創作,動力滿滿!下面開始正文:
文章目錄
一、查找的基本概念
1.查找表
2.關鍵字
3.查找
4.動態查找表與靜態查找表
5.平均查找長度
二、順序查找法
1.概念
2.實踐
?
一、查找的基本概念
在講順序查找法之前先來認識一些關于查找的基本概念。
1.查找表
- 由同一類型的數據元素(或記錄)所構成的集合
- 數據元素之間存在完全松散的關系
- 非常靈活的數據結構
2.關鍵字
- 關鍵字是數據元素(或記錄)中某個數據項的值,可以用它標識一個數據元素(或記錄)
- 若關鍵字可以唯一地標識一個記錄,則稱之為主關鍵字
- 反之,若用以識別若干記錄的關鍵字稱之為次關鍵字
- 注意,當元素只有一個數據項時,其關鍵字即為該數據元素的值
3.查找
- 查找是根據給定的某個值,在查找表中確定一個關鍵字等于給定值的記錄或者數據元素
- 若表中存在該記錄則查找成功,可返回整個記錄的信息或者指示該記錄在查找表中的位置
- 若表中不存在該記錄則查找失敗,可返回一個“空”記錄或者“空”指針
4.動態查找表與靜態查找表
- 若在查找的過程中對表做修改操作(如插入或刪除),則相應的表稱之為動態查找表,否則為靜態查找表
- 即動態查找表的表結構本身是在查找的過程中所動態生成的,即在創建表時,對于給定值,若表中存在其關鍵字所對應的記錄,則查找成功返回;否則插入關鍵字等于給定值的記錄
5.平均查找長度
- ?為確定記錄在查找表中的位置,需要和給定值進行比較的關鍵字個數的期望值,稱為查找算法在查找成功時的平均查找長度(Average Searche Length, ASL)
- 由于查找算法的基本運算是關鍵字之間的比較操作,故可以使用ASL來衡量評估查找算法的性能
- 也可以采用一種很直觀的評估方法——程序執行所消耗的時間。文章傳送門
?
?
二、順序查找法
1.概念
順序查找(Sequential Search)的查找過程為:從表的一端開始,依次將記錄的關鍵字和給定的值進行比較,若某記錄的關鍵字和給定值相等,則為查找成功;反之,若掃描整個表之后,仍然未找到關鍵字和給定值相等的記錄,則為查找失敗。
2.實踐
在給定的無序數組中查找給定的值
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("數組元素:");for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}System.out.println();System.out.println("查找key1的結果:"+dayone.search(a,key1));System.out.println("查找key2的結果:"+dayone.search(a,key2));}public String search(int []a,int key){//初始化變量int i=0;//掃描整個數組while(i<a.length){//將數組元素一一與給定值key進行比較if(key==a[i])return "查找成功! "+key+"是數組的第"+(i+1)+"個元素";//匹配成功則返回i++;//當前未匹配成功將索引下標i后移一位繼續比對}//如果循環遍歷已經結束了還未找到給定值key則表明數組中不存在該值,查找失敗return "查找失敗,數組中不存在該元素!";} }執行結果
?
?
總結
以上是生活随笔為你收集整理的经典算法之顺序查找法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript中onblur事件
- 下一篇: UE4之替换第三人称模板