常用排序查询算法汇总

一、排序算法

1.  选择排序

      选择排序基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。详细解释见:选择排序实现

选择排序实现

2.  冒泡排序

        冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。详细解释见:冒泡排序实现

冒泡排序实现

3.  插入排序

      直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。详细解释见:插入排序实现

插入排序实现

4.  快速排序

      快速排序基本思想是先选择基准数,把所有小于基准数的都移到左边,把所有大于基准数的都移到记基准数的右边。然后再对左边数组和右边数组进行同样的操作,最后整个数组就都排好序了。

快速排序实现一:快速排序实现一

快速排序实现二:快速排序实现二

快速排序实现

5.  归并排序

        归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

详细实现见:归并排序实现

图解归并排序:图解归并排序

6.  希尔排序

7.  堆排序

图解堆排序:图解堆排序

8.  计数排序

      技数排序很简单,我简单举例解释一下:有一个数组都>0,并且知道最大值,要求对其排序。我们可以初始化一个int array[MAX] = {0}. 然后遍历数组得到每一个value,若array[value]++;最后遍历array,就输出值非0的下标,就是排好序的数组。

9.  基数排序

        基数排序就是对数字按位进行排序,比如按个位排序,再按百位排序,再按千位,最后就可以得到整个有序数组。基数排序也是用空间代替了比较。详细实现见:基数排序实现

10.  桶排序

        桶排序是在技数排序的基础而来,具体实现见:桶排序实现

11.  外部排序外部排序二

        以上数据量不大,一次性在内存中可以执行完的都为内部排序。外部排序是需要内存和磁盘相结合的形式进行的排序形式。

外部排序详解一:外部排序

外部排序详解二:外部排序二

二、查找算法

1. 二分查找

    二分查找是在一个已经排好序的数组上进行查找,每次取中间的值,小于则从左边继续查找,大于则从右边继续查找,等于则直接返回中间值。

2. 二叉树

    二叉树本身用处不大,主要都是在二叉树上的优化,二叉树讲解:二叉树

3. 二叉查找数

      二叉查找树详细实现:二叉查找树

4. 平衡二叉树

      二叉查找树最差情况下可能所有的子节点全部偏向一边,而平衡二叉树是平衡的二叉查找树,最差情况也是平衡的,不会出现完全导向一边的情况。平衡二叉树实现:平衡二叉树

5. 平衡2-3数

    平衡二叉树重建平衡时可能非常复杂,2-3树是对齐的优化。具体实现:平衡2-3树

6. 红黑树

      红黑树是对平衡2-3树的一种实现,具体实现:红黑树

7. B树

附带:B树讲解视频

8. B+树

附带:视频讲解

9. B*树

附带:视频讲解

10. 哈希查找


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 1,431评论 0 1
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,742评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,214评论 0 52
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 1,458评论 1 4
  • 七绝 无题(学悠悠用李商隐端居韵) 蹭蹬经年世路悠,清霜两鬓满怀秋。 梦中把酒醒余味,只记风流不记愁。
    言可畏阅读 596评论 0 1