zoukankan      html  css  js  c++  java
  • 线性查找

    线性查找

    代码如下:

    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;
    }
    }

    只相信苦尽甘来
  • 相关阅读:
    GeoHash
    CMake官方教程翻译文档
    常用开源系统
    Python Tools
    CMake 笔记
    Nginx 多进程连接请求/事件分发流程分析
    连麦方案中各条流之间时间戳同步问题
    音视频重新编码时间戳同步问题
    基于网络流音视频包的音视频解码思路
    协程库st(state threads library)原理解析
  • 原文地址:https://www.cnblogs.com/F001li/p/7055703.html
Copyright © 2011-2022 走看看