八种基本排序方法

Posted xinsir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八种基本排序方法相关的知识,希望对你有一定的参考价值。

一、直接插入排序(内部排序、O(n2)、稳定)

  原理:从待排序的数中选出一个来,插入到前面的合适位置。

二、选择排序(O(n2)、不稳定)
  与直接插入排序正好相反,选择排序是从待排序的数中选出最小的放在已经排好的后面,这个算法选数耗时。

三、快速排序(O(nlogn)、不稳定)

  快速排序简称快排,是一种比较快的排序,适合基本无序的数据,为什么这么说呢?下面我说下快排的思路:

  设置两个指针:i和j,分别指向第一个和最后一个,i像后移动,j向前移动,选第一个数为标准(一般这样做,当然快排的关键就是这个“标准”的选取),从后面开始,找到第一个比标准小的数,互换位置,然后再从前面,找到第一个比标准大的数,互换位置,第一趟的结果就是标准左边的都小于标准,右边的都大于标准(但不一定有序),分成两拨后,继续递归的使用上述方法,最终有序!

四、冒泡排序(稳定、基本有序可达O(n),最坏情况为O(n2))

  冒泡排序是一种很简单,不论是理解还是时间起来都比较容易的一种排序算法,思路简单:小的数一点一点向前起泡,最终有序。

五、归并排序

  归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
  首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。

技术分享图片

 

技术分享图片



以上是关于八种基本排序方法的主要内容,如果未能解决你的问题,请参考以下文章

使用Java实现八种基本排序

八大经典排序算法的理解动图演示和C++方法实现

java八种排序算法---快速排序

Java常用的八种排序算法与代码实现

应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?

数据结构-八种排序算法