Java中兩種基本的查詢演算法之順序查詢
阿新 • • 發佈:2019-02-08
Java中兩種基本的查詢演算法:順序查詢和二分查詢(折半查詢)。
第一種查詢演算法:順序查詢:
/**
* 1. 順序查詢
* 基本思想:
* 從陣列的一端向另一端逐個將元素與給定值進行比較,
* 若相等,則查詢成功,給出該元素在表中的位置;
* 若整個表檢測完仍未找到與給定值相等的元素,則查詢失敗,給出失敗資訊。
*
* 時間複雜度:O(n)
*
*/
順序查詢示例程式碼如下:
import java.util.Scanner;
/**
* 1.順序查詢
* 基本思想:
* 從陣列的一端向另一端逐個將元素與給定值進行比較,
* 若相等,則查詢成功,給出該元素在表中的位置;
* 若整個表檢測完仍未找到與給定值相等的元素,則查詢失敗,給出失敗資訊。
*
* 時間複雜度:O(n)
*
*/
public class SequenSearch {
public static void main(String[] arg) {
int[] arr = {4,6,2,8,1,9,7,3,5};
System.out.println("陣列順序為:");
for(int n : arr){
System.out.print(n+" ");
}
System.out.println("\n請輸入一個數字:");
@SuppressWarnings("resource" )
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
//呼叫sequenSearch()方法,將返回值儲存在result中
int result = sequenSearch(arr, num);
if(result == -1){
System.out.println("查詢失敗!");
}else{
System.out.println("查詢成功,數字位於陣列第" +(result+1)+"位!");
}
}
//順序查詢
private static int sequenSearch(int[] arr, int num) {
for(int i=0; i<arr.length; i++) {
if(arr[i] == num){//如果資料存在
return i;//返回資料所在的下標,也就是位置
}
}
return -1;//不存在的話返回-1
}
}