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. 二叉排序树查找

      待续

  • 相关阅读:
    UVA 10564
    ARM GCC CodeSourcery 下载地址
    Linux Shell编程入门
    设计模式------Adapter(适配器)
    设计模式------STRATEGY(策略模式)
    对象创建型模式------Singleton(单例模式)
    设计模式------PROTOTYPE(原型),TEMPLATE(模板)
    对象创建型模式------Builder(生成器或建造者模式)(2)
    对象创建型模式------工厂模式
    effective c++(07)之为多态基类声明virtual析构函数
  • 原文地址:https://www.cnblogs.com/banyu/p/6579801.html
Copyright © 2011-2022 走看看