本文根据《大话数据结构》一书,实现了Java版的顺序表查找算法。
顺序表查找
顺序查找(Sequential Search):从第一个到最后一个记录依次与给定值比较,若相等则查找成功。
顺序查找优化:设置哨兵,可以避免每次循环都判断是否越界。在数据量很多时能提高效率。
时间复杂度:O(n),n为记录的数。
以下为顺序查找算法及其优化的Java代码:
package Sequential_Search; /** * 顺序表查找 * 数组下标为0的位置不用来储存实际内容 * @author Yongh * */ public class Sequential_Search { /* * 顺序查找 */ public int seqSearch(int[] arr,int key) { int n=arr.length; for(int i=1;i<n;i++) { //i从1开始 if(key==arr[i]) return i; } return 0; } /* * 顺序查找优化,带哨兵 */ public int seqSearch2(int[] arr,int key) { int i=arr.length-1; arr[0]=key; //将arr[0]设为哨兵 while(arr[i]!=key) i--; return i; //返回0说明查找失败 } public static void main(String[] args) { int[] arr = {0,45,68,32,15}; Sequential_Search aSearch = new Sequential_Search(); System.out.println(aSearch.seqSearch(arr, 15)); System.out.println(aSearch.seqSearch(arr, 45)); } }
4 1