python数据结构-最全的六种排序
1.冒泡排序:
- 比较相邻的元素,如果第一个比第二个大,那就交换位置
- 让大的元素跟下一个相邻的元素作比较,如果大于交换位置
- 对所有元素重复以上步骤(除了最后一个),直到没有任何一个需要作对比
2.选择排序:
- 从未排序序列中找到最小的元素放到序列的初始位置,
- 再从剩余未排序序列中找到最小的元素放到已排序序列的末端
- 以此类推直到所有元素排序完成
3.插入排序:
- 对于未排序的元素,在已排序的序列中从后向前进行扫描,找到相应位置并插入,
- 需要反复把已经排序好的元素逐步向后挪位,为新元素提供插入空间。
4.快速排序:
- 从数列中挑出一个元素,成为“基准数”(通常为第一个元素)
- .重新排序数列,比基准数小的放在左边,比基准数大的放在右边
- (相同的数可以在任一一边)分区结束后,基准数位于数列中间位置
- 递归的把小于基准数的子数列和大于基准数的子数列排序
5..希尔排序:
- 以间隔为n进行对待
- 分成n个子序列,并对n个子序列以此进行插入排序
- 然后整合,获得新的序列
- 缩小间隔,再以间隔对待,进行插入排序
- 希尔排序是不稳定的,但优化了插入排序的平均时间
6.归并排序:
- 按对半分,分成两半。
- 对两部分,分别进行排序(递增)。
- 合并两个序列,左右比较取小的值