zoukankan      html  css  js  c++  java
  • 基础排序算法

    标签: 编程基础 算法 排序 java

      编程中经常遇到的基础算法中不外乎是顺序查找,二分查找,哈希表查找,二叉排序树查找几种。下面详细总结一下这几种排序。

    1. 顺序查找

      顺序查找是最简单的查找算法。思想是从第一个元素开始,一个一个往下比较,找到与键值匹配的元素即可返回。可以实施在链表或者数组上。在此不展开描述。
      平均 复杂度为O(n)
      

    2. 二分查找

      二分查找也称折半查找,是指在有序数组中展开查找,每次选取有序数组中间元素进行比较,找到与键值匹配的元素即可返回。如果键值比中间元素小,则往中间元素前面的元素找,反之则往右边的元素找。
      算法复杂度O(log n)。
      
      二分查找可用简单的递归代码解决。

    public static int binSearch(int[] array, int key, int begin, int end){
        if(begin >= end) return -1;
        int middle = (begin + end) / 2;
        if(array[middle] == key) return middle;
        else if(array[middle] > key) 
            return binSearch(array, key, begin, middle - 1);
        else 
            return binSearch(array, key, middle + 1, end);
    }
    

      非递归解决方法,用循环实现即可。

    public static int binSearch(int[] array, int key){
        if(array == null || array.length == 0) return -1;
        int begin = 0, end = array.length - 1;
        while(begin < end){
            int middle = (begin + end) / 2;
            if(array[middle] == key) return middle;
            else if(array[middle] > key) end = middle - 1;
            else begin = middle + 1;
        }
        return -1;
    }
    

     
      

    3. 哈希查找

      算法复杂度O(1)。
      哈希查找是在hash表建立好的基础上,对给定key来查找对应value的查找算法。首先,对于给定的key值,使用Hash(key)来计算该key值在hash表上的位置,根据下标即可查出对应值。
      如果所有key对应的value值都唯一地散列在hash表中,上面的描述是成立的。但是hash表的存储数据时会发生冲突的情况,如果是发生过冲突的,value的散列并不唯一。所以根据Hash(key)作为下标并不完美,还要根据是否冲突了来作判断,具体要看该hash表使用了哪一种冲突处理机制。
      

    4. 二叉排序树查找

      待续

  • 相关阅读:
    Help-IntelliJIDEA-2019.3.4-基础设置:6. 开启自动编译
    Help-IntelliJIDEA-2019.3.4-基础设置:5.Tomcat Server
    Help-IntelliJIDEA-2019.3.4-基础设置:4.自动导包和智能移除 (默认配置)
    Help-IntelliJIDEA-2019.3.4-基础设置:3. 版本控制Git
    Help-IntelliJIDEA-2019.3.4-基础设置:2. 全局Maven(默认配置)
    Help-IntelliJIDEA-2019.3.4-基础设置:1. 全局JDK(默认配置)
    Help-IntelliJIDEA-2019.3.4:IntelliJ IDEA 使用教程
    汉语-词语:笃行
    去除某个元素的属性
    select选中
  • 原文地址:https://www.cnblogs.com/banyu/p/6579801.html
Copyright © 2011-2022 走看看