基础排序算法

标签: 编程基础 算法 排序 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. 二叉排序树查找

  待续

posted @   斑鱼  阅读(190)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)
点击右上角即可分享
微信分享提示