顺序查找
程序员文章站
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;
}
}
上一篇: 顺序查找和二分查找表
下一篇: 强化学习之动态规划