讲解常见排序算法及其python实现——第一节

  1.冒泡排序

  应该说,冒泡排序是所有排序里面最简单的一种排序方法了。冒泡,故名思义,就是依次去比较相邻的两个元素,如果他们的顺序错误就把他们调换过来,通过该方法越大(或越小)的元素会通过不断交换,慢慢浮到数列的顶端,直到两两之间均没有元素需要再交换,排序完成。由于每次交换都可能改变之前搜索过的元素之间的关系,所以需要反复进行。具体操作步骤为:

  1.对比相邻位置元素,如果前一个比后一个大,就把它们两个调换位置;对每一对相邻元素都进行检查,最后的元素变成最大的元素;

  2.新一轮再次针对所有相邻元素重复以上步骤,除了最后一个最大值,进行第二轮比较。

  3.后面每一轮持续比对越来越少的元素,并重复上述步骤,知道没有相邻元素需要交换,冒泡结束。以一串数字为例举例子:

       可以看到,假如对15个数排序,那么需要最多进行15轮的相邻比较,就可以完成排序。

  上代码

  

  事实上,该例子再第三轮结束后就结束了排序,故冒泡排序是可以进行优化计算的,优化方法就是加一个判断相邻元素是否已经不需要进行交换的标签,代码如下。

优化之后排序只需要三轮完成。

 2.选择排序

   选择排序也是一种非常简单直观的排序算法,一开始从未排序序列中找到最小(大)元素,存放到已排序序列的起始位置;然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

  1.每一趟从待排序的数据元素中选出最小(或最大)的一个元素, 

  2.顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
  3.选择排序是不稳定的排序方法。

3.插入排序

  插入排序的原理类似抓扑克牌,即从未排序的数据中“拿牌”插入到已排序的序列的相应位置中,该方法适于少量数据的排序,是较稳定的排序方法。

  有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,要求插入后此数据序列仍然有序。刚开始只有一个元素显然有序,然后插入一 个元素到适当位置,然后再插入第三个元素,依次类推。步骤:

  1.从第一个元素开始,将该元素当作已排序;

  2.取出下一个元素,在已排序的元素序列中从后向前扫描;

  3.如果已排序元素大于新元素,将已排序元素移到下一位置;

  4.重复3,直到找到已排序元素小于或等于新元素位置,将新元素插入该位置;

  5.重复2-4

  代码见下一节

  

 

 

 

猜你喜欢

转载自www.cnblogs.com/jayliu/p/9015053.html