带监视哨和没有带监视哨的顺序查找算法
2015-11-10 17:01
471 查看
import java.util.Scanner; /** * 顺序查找的两种算法(带监视哨和没有带监视哨) * * @author chenjunxu * @since 2015-11-10 */ public class Main { public static void main(String[] args) { System.out.println("请输入一个数组的长度:"); Scanner scan = new Scanner(System.in); int arr_length = scan.nextInt(); int arr[] = new int[arr_length+1]; System.out.println("请输入数组的内容(用空格分开):"); for (int i = 1; i < arr_length + 1; i++) { arr[i] = scan.nextInt(); } System.out.println("请输入你要查找的数字:"); int k = scan.nextInt(); System.out.println("不带监视哨的结果为:"+sequenceNoLookout(arr, k)); System.out.println("带监视哨的结果为:"+sequenceWithLookout(arr, k)); } /** * 不带监视哨的顺序查找(若找不到相应内容,则返回0) * * @param arr 需要查找的数组 * @param k 需要查找的数字 * @return 返回下标 */ public static int sequenceNoLookout(int arr[], int k) { // 获取数组的长度 int i = arr.length-1; while (arr[i] != k && i > 0) { i--; } return i-1; } /** * 带监视哨的顺序查找(若找不到相应内容,则返回0) * * @param arr 需要查找的数组 * @param k 需要查找的数字 * @return 返回下标 */ public static int sequenceWithLookout(int arr[], int k) { // 将数组的第一个数变成要查找的数字 arr[0] = k; // 获取数组的长度 int i = arr.length-1; while (arr[i] != k) { i--; } return i-1; } }
运行结果如下:
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统