python _ 排序

  • A+
所属分类:python基础入门

排序

冒泡排序:是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

1. 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。

2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3. 针对所有的元素重复以上的步骤,除了最后一个。

4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

python _ 排序

代码如下:

python _ 排序

选择排序:

快速排序:

步骤为:

1. 从数列中挑出一个元素,称为"基准",

2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区操作。

3. 递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。

将一个数组的一个元素作为基准、选定两个指针 low和high,先让high从向前移动,在high>low的前提下,如果high对应的元素小于基准元素,则把high对应的元素移动到low的位置

然后把low右移,如果low对应的元素比midValue大,把low的对应的元素赋给high的位置,如此循环,到low与high重合时退出,再midValue的左右排序

快速排序时要理解在有函数递归调用:

python _ 排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕

代码如下:

python _ 排序

插入排序:把序列的左边第一个元素作为有序序列,从右边的无序元素,从左到右依次与左侧的有序元素比较,找到相应位置,有序序列的元素向后移动,为该元素提供空间。

python _ 排序

希尔排序:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序。python _ 排序

希尔排序与插入排序相似,只是在步长上有了变化

快速排序:

步骤为:

1. 从数列中挑出一个元素,称为"基准",

2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区操作。

3. 递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。

将一个数组的一个元素作为基准、选定两个指针 low和high,先让high从向前移动,在high>low的前提下,如果high对应的元素小于基准元素,则把high对应的元素移动到low的位置

然后把low右移,如果low对应的元素比midValue大,把low的对应的元素赋给high的位置,如此循环,到low与high重合时退出,再midValue的左右排序

python _ 排序

并归排序

将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序。

python _ 排序

这里主要写的是代码和算法思路,如果不理解的可以到csdn上搜索《白话经典算法系列》,部分图片来自网络

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: