順序検索(OrderSearch)
16442 ワード
お知らせ:このプロジェクトのGitHubアドレスは「myleetcode」で、興味のある学生
1シーケンス検索
シーケンス検索は、1つのキュー内で所与のキーワードと同じ数の特定の場所を特定します.キーワードとキュー内の数を最後から1つずつ比較し,所与のキーワードと同じ数を見つけるまで効率が低いという欠点がある.
2時間の複雑さ
このアルゴリズムの時間的複雑度は
3両実現方式第1種:直接順序検索を行う. 第2種:調査対象データにおいて順次ポーリング検索を行い、調査対象データが存在する場合は現在のデータインデックス位置を返し、存在しない場合は存在しないことを示す
4 Python実現
Star
、Fork
、誤り訂正を歓迎します.1シーケンス検索
シーケンス検索は、1つのキュー内で所与のキーワードと同じ数の特定の場所を特定します.キーワードとキュー内の数を最後から1つずつ比較し,所与のキーワードと同じ数を見つけるまで効率が低いという欠点がある.
2時間の複雑さ
このアルゴリズムの時間的複雑度は
O(n)
である.3両実現方式
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;
}
}
-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