順序検索(OrderSearch)


お知らせ:このプロジェクトのGitHubアドレスは「myleetcode」で、興味のある学生StarFork、誤り訂正を歓迎します.
1シーケンス検索
シーケンス検索は、1つのキュー内で所与のキーワードと同じ数の特定の場所を特定します.キーワードとキュー内の数を最後から1つずつ比較し,所与のキーワードと同じ数を見つけるまで効率が低いという欠点がある.
2時間の複雑さ
このアルゴリズムの時間的複雑度はO(n)である.
3両実現方式
  • 第1種:直接順序検索を行う.
  • public class OrderSearch {
    	public static void main(String[] args) {
            int[] arr = new int[]{2, 3, 5, 6, 7, 3,};
            System.out.print("        :");
            System.out.println(orderSearch(arr, 0));
        }
    
        private static int orderSearch(int[] arr, int goal) {
            //                  
            int i = 0;
            for (; i <= arr.length - 1; i++) {
                // goal     
                if (goal == arr[i]) {
                    return i;
                }
            }
            //          ,    -1
            return -1;
        }
    }
    
  • 第2種:調査対象データにおいて順次ポーリング検索を行い、調査対象データが存在する場合は現在のデータインデックス位置を返し、存在しない場合は存在しないことを示す-1を返し、効率を高めて主要コードを減らす操作のために、配列の最後のビットに監視哨戒を設けることができ、データの境界を効果的に防止することができる.現在のデータが必要なデータかどうかを比較するだけです.
  • public class OrderSearch {
        public static void main(String[] args) {
            int[] arr = {12, 24, 5, 52, 35, 3, 7};
            System.out.print("        :");
            System.out.println(orderSearch(arr, 5));
        }
    
        private static int orderSearch(int[] arr, int goal) {
            //       ,     arr    
            int[] temp = new int[arr.length + 1];
            for (int i = 0; i < arr.length; i++) {
                //     arr              
                temp[i] = arr[i];
            }
            //      
            temp[arr.length] = goal;
            int result;
            for (int i = 0; ; i++) {
                if (temp[i] == goal) {
                    result = i;
                    //         ,     
                    break;
                }
            }
            if (result < arr.length) {
                return result;
            } else {
                return -1;
            }
        }
    }
    

    4 Python実現
    def order_search(nums, target):
        if len(nums) == 0:
            return -1
        elif len(nums) < 2 and nums[0] != target:
            return -1
    
        index = 0
        while index < len(nums):
            if nums[index] == target:
                return index
            index += 1
    
        return -1
    
    
    def order_search_2(nums, target):
        if len(nums) == 0:
            return -1
        elif len(nums) < 2 and nums[0] != target:
            return -1
    
        nums2 = []
        for num in nums:
            nums2.append(num)
    
        nums2.append(target)
    
        index = 0
        while index < len(nums):
            if nums2[index] == target:
                break
            index += 1
    
        if index < len(nums):
            return index
        else:
            return -1