欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

顺序查找

程序员文章站 2024-03-17 17:14:40
...

顺序查找比较简单,执行的操作从数据序列中的第一个元素开始,从头到尾一次逐个查找,直到找到所要的数据或搜索完整个数据序列。顺序查找主要针对少量的、无规则的数据。

对于包含n个数据的顺序序列,使用顺序查找方法查找数据,最理想的情况是目标数据位于数组的第一个,这样只要比较1次就可以找到目标数据。而最差的情况是需要比较完所有的n个数据才能找到目标数据或者确认没有该数据。平均来说,比较次数为n/2次,效率比较差。

顺序查找算法的程序代码比较简单,在java语言中只需要编写一个循环,将数组中各元素依次与待查找的目标数进行比较即可。示例代码如下:

/**
 * @description arr:待查找的数组, m:数组的长度, n:需要查找的数据
 * @author chengjunyu
 * @date 2020-04-13 12:32:23
 */
int sequentialSearch(int[] a, int m, int n) {
    int i, f = -1;
	for(i=0; i<m; i++) {
		if(n == a[i]) {
			f = i;
			break;
		}
	}
	return f;
}

顺序查找示例演示:

package auth;

import java.util.Scanner;

public class SequentialSearch {
	
	public static void main(String[] args) {
		int x, y, i, n = 15;
		int[] arr = new int[n];
		for(i=0; i<n; i++) {
			arr[i] = (int) (100+Math.random()*100);
		}
		System.out.println("开始演示顺序查找算法");
		System.out.println("待查找数据序列:");
		for(i=0; i<n; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println("\n");
		System.out.print("请输入要查找的数据:");
		Scanner scanner = new Scanner(System.in);
		x = scanner.nextInt();
		
		y = sequentialSearch(arr, n, x);
		
		if(y < 0) {
			System.out.println("很抱歉,未查找到该数据");
		}else {
			System.out.println("数据"+x+"位于数组的第"+(y+1)+"个位置");
		}
	}
	
	/**
	 * @description arr:待查找的数组, m:数组的长度, n:需要查找的数据
	 * @author chengjunyu
	 * @date 2020-04-13 12:32:23
	 */
	static int sequentialSearch(int[] arr, int m, int n) {
		int i, f = -1;
		for(i=0; i<m; i++) {
			if(n == arr[i]) {
				f = i;
				break;
			}
		}
		return f;
	}

}