查找算法:顺序查找思想及实现示例
程序员文章站
2024-03-20 10:50:04
...
查找算法思想
如果查找到相应的数据项,往往需要返回该数据项的地址或者位置信息。这样。程序中可以通过位置信息来显示数据项、插入数据项、删除数据项等操作。
如果没有查找到相应的数据项,则可以返回相应的提示信息。
在实际应用中,针对不同的情况往往可以选择不同的查找算法。对于无顺序的数据,只有逐个比较数据,才能找到需要的内容,这称为顺序查找。对于有顺序的数据,也可以采用顺序查找法逐个比较,但还可以采用更快速的方法来找到所需的数据。另外,对于一些特殊的数据结构,如链表、树结构和图结构等,其都有对应的查找算法。
顺序查找算法思想
从数据序列中的第一个元素开始,从头到尾依次逐个查找,直到找到所要的数据或搜索完整个数据序列。
顺序查找主要针对少量的、无规则的数据。对于包含n个数据的数据序列,使用顺序查找方法查找数据,最理想的情况是目标数据位于数组的第一个,这样比较1次就能找到目标数据。而最差的情况是需比较完所有的n个数据才能找到目标或者确认没有该数据。平均来说,比较次数为 n/2 次,其效率比较差。
顺序查找算法示例:
int searchFun(int[] a,int x) {
for(int i = 0; i < a.length; i ++) {
if(a[i] == x) {
return i;
}
}
return -1;
}
顺序查找算法实例:
public class SearchFun {
// 顺序查找算法
private static final int NUM = 10;
public static int searchFun(int[] a,int x) {
for(int i = 0; i < a.length; i ++) {
if(a[i] == x) {
return i;
}
}
return -1;
}
public static void print(int[] a){
for(int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] array = new int[NUM];
for(int i = 0;i < array.length; i++) {
array[i] = (int)(100 + Math.random()*100);
}
System.out.println("***顺序查找算法演示***");
System.out.print("数据序列为:");
print(array);
System.out.print("请输入要查找的数:");
Scanner sc = new Scanner(System.in);
int target = sc.nextInt();
int index = searchFun(array,target);
if(index == -1){
System.out.printf("没找到数据:%d%n",target);
}else {
System.out.printf("数据:%d位于数组的第%d个元素处",target,index + 1);
}
}
}
运行代码结果如下:
***顺序查找算法演示***
数据序列为:116 105 155 134 140 131 139 171 100 108
请输入要查找的数:140
数据:140位于数组的第5个元素处