您的位置 首页 > 数码极客

python排序python排序算法?

排序

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

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

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

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

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

代码如下:

选择排序:

快速排序:

步骤为:

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

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

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

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

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

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

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

代码如下:

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

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

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

快速排序:

步骤为:

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

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

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

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

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

并归排序

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

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

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“python排序,python排序算法,python排序函数,python排序从大到小,python排序函数sort”边界阅读