• 线性查找


    线性查找

    代码如下:

    package ClassDemo;

    import java.util.Arrays;

    public class TestLinearSearch {
    public static void main(String[] args) {
    int[] list = {1,7,2,3,4,5,6,8,9,10};
    // int i = linearSearch(list, 1);
    // int i = binarySearch(list, 9);
    // System.out.println(i);
    System.out.println(Arrays.toString(list));
    // arraySelectionSort(list);
    arrayInsertionSort(list);
    System.out.println(Arrays.toString(list));
    }

    private static void arrayInsertionSort(int[] list) {
    for (int i = 1; i < list.length; i++) {
    //保存当前元素
    int currentElement = list[i];
    int k;

    for (k = i - 1; k >= 0 && list[k] > currentElement; k--) {
    list[k + 1] = list[k];
    }

    list[k + 1] = currentElement;
    }

    } /**
    * 选择排序数组list
    * @param list
    * @return
    */
    private static void arraySelectionSort(int[] list) {
    for (int i = 0; i < list.length; i++) {
    int currentMin = list[i];
    int currentMinIndex = i;
    //找到最小的元素currentMin,currentMinIndex
    for (int j = i + 1; j < list.length; j++) {
    if (currentMin > list[j]) {
    currentMin = list[j];
    currentMinIndex = j;
    }
    }
    //将最小的元素list[currentMinIndex]和list[i]互换
    if (currentMinIndex != i) {
    list[currentMinIndex] = list[i];
    list[i] = currentMin;
    }
    }
    } /**
    * 线性查找数组list中值为key的元素,返回该元素的下标i, 如果找不到返回-1
    * @param list 需要查找的数组
    * @param key 需要查找的元素
    * @return i 返回的下标
    */
    public static int linearSearch(int[] list, int key) {
    for (int i = 0; i < list.length; i ++) {
    if (key == list[i]) {
    return i;
    }
    }
    return -1;
    }
    /**
    * 二分查找数组list中值为key的元素,返回该元素的下标i, 如果找不到返回-1
    * @param list 需要查找的数组
    * @param key 需要查找的元素
    * @return i 返回的下标
    */
    public static int binarySearch(int[] list, int key) {
    int low = 0;
    int high = list.length - 1;
    while (high >= low) {
    int mid = (low + high) / 2;
    if (key < list[mid]) {
    high = mid -1;
    } else if (key == list[mid]) {
    return mid;
    } else {
    low = mid + 1;
    }
    }
    return -1;
    }
    }

    只相信苦尽甘来
  • 相关阅读:
    大数据应用案例之医疗行业
    优先数调度:按最高优先级算法
    实验二:先来先服务进程调度
    实验一:熟练使用DOS操作命令实验
    考试管理搭建帮助文档
    介绍配置管理工具SVN的使用
    在VMware安装Windows server 2003操作系统帮助文档
    搭建一个考试管理系统
    WinMail邮件服务器(客户端)环境搭建与配置
    搭建OA项目环境及卸载指南
  • 原文地址:https://www.cnblogs.com/F001li/p/7055703.html
Copyright © 2020-2023  润新知