查找算法:順序查找思想及實現示例

查找算法思想

如果查找到相應的數據項,往往需要返回該數據項的地址或者位置信息。這樣。程序中可以通過位置信息來顯示數據項、插入數據項、刪除數據項等操作。

如果沒有查找到相應的數據項,則可以返回相應的提示信息。

在實際應用中,針對不同的情況往往可以選擇不同的查找算法。對於無順序的數據,只有逐個比較數據,才能找到需要的內容,這稱爲順序查找。對於有順序的數據,也可以採用順序查找法逐個比較,但還可以採用更快速的方法來找到所需的數據。另外,對於一些特殊的數據結構,如鏈表、樹結構和圖結構等,其都有對應的查找算法。

順序查找算法思想

從數據序列中的第一個元素開始,從頭到尾依次逐個查找,直到找到所要的數據或搜索完整個數據序列。

順序查找主要針對少量的、無規則的數據。對於包含n個數據的數據序列,使用順序查找方法查找數據,最理想的情況是目標數據位於數組的第一個,這樣比較1次就能找到目標數據。而最差的情況是需比較完所有的n個數據才能找到目標或者確認沒有該數據。平均來說,比較次數爲 n/2 次,其效率比較差。

順序查找算法示例:

    int searchFun(int[] a,int x) {
        for(int i = 0; i < a.length; i ++) {
            if(a[i] == x) {
                return i;
            }
        }
        return -1;
    }

順序查找算法實例:

public class SearchFun {
    // 順序查找算法
    private static final int NUM = 10;

    public static int searchFun(int[] a,int x) {
        for(int i = 0; i < a.length; i ++) {
            if(a[i] == x) {
                return i;
            }
        }
        return -1;
    }

    public static void print(int[] a){
        for(int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int[] array = new int[NUM];
        for(int i = 0;i < array.length; i++) {
            array[i] = (int)(100 + Math.random()*100);
        }
        System.out.println("***順序查找算法演示***");
        System.out.print("數據序列爲:");
        print(array);
        System.out.print("請輸入要查找的數:");
        Scanner sc = new Scanner(System.in);
        int target = sc.nextInt();
        int index = searchFun(array,target);

        if(index == -1){
            System.out.printf("沒找到數據:%d%n",target);
        }else {
            System.out.printf("數據:%d位於數組的第%d個元素處",target,index + 1);
        }
    }
}

運行代碼結果如下:

***順序查找算法演示***
數據序列爲:116 105 155 134 140 131 139 171 100 108 
請輸入要查找的數:140
數據:140位於數組的第5個元素處
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章