如何将Java中的快速排序及其优化(双路快排、三路快排)融合为一个高效的长尾排序算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1153个文字,预计阅读时间需要5分钟。
1. 快速排序思想:快速排序属于交换排序的基本思想。选择一个基准值val,将比val小的元素放在其前面,比val大的元素放在其后面,最后将val放在中间位置。具体操作为:先在数列中找到一个数与首元素交换,然后再把这个数与尾元素交换,以此类推,直到整个数列排序完成。
1.快速排序思想快速排序是属于交换排序的基本思想。选择一个基准值val把比val小的放在前面比val大的放在后面最后把val放在两 1.快速排序思想
快速排序是属于交换排序的基本思想。选择一个基准值val把比val小的放在前面比val大的放在后面最后把val放在两个区域中间val就到了最终的位置。
很明显快排是一个原地排序也是一个不稳定排序。
空间复杂度1.可以是为新数组开辟额外空间On 2.当然也可以在原数组内交换得来O1
时间复杂度Onlogn
代码实现
1.把数组第一个元素作为val先用变量val存下来设置两个指针i用来标记遍历的元素j-1用来标记 2.i start1j start遇到array[i]小于val的情况就把array[i]和array[j]交换小于区域扩张ji遇到大于val的情况就继续判断下一个ii直到i>j,把第一个元素和第j个元素交换返回j的下标为下一次递归边界做准备。 3.运用递归接着把[startkey-1]和[key1end]进行第2步操作。 4.重复2.3.步直到start>end退出递归。
本文共计1153个文字,预计阅读时间需要5分钟。
1. 快速排序思想:快速排序属于交换排序的基本思想。选择一个基准值val,将比val小的元素放在其前面,比val大的元素放在其后面,最后将val放在中间位置。具体操作为:先在数列中找到一个数与首元素交换,然后再把这个数与尾元素交换,以此类推,直到整个数列排序完成。
1.快速排序思想快速排序是属于交换排序的基本思想。选择一个基准值val把比val小的放在前面比val大的放在后面最后把val放在两 1.快速排序思想
快速排序是属于交换排序的基本思想。选择一个基准值val把比val小的放在前面比val大的放在后面最后把val放在两个区域中间val就到了最终的位置。
很明显快排是一个原地排序也是一个不稳定排序。
空间复杂度1.可以是为新数组开辟额外空间On 2.当然也可以在原数组内交换得来O1
时间复杂度Onlogn
代码实现
1.把数组第一个元素作为val先用变量val存下来设置两个指针i用来标记遍历的元素j-1用来标记 2.i start1j start遇到array[i]小于val的情况就把array[i]和array[j]交换小于区域扩张ji遇到大于val的情况就继续判断下一个ii直到i>j,把第一个元素和第j个元素交换返回j的下标为下一次递归边界做准备。 3.运用递归接着把[startkey-1]和[key1end]进行第2步操作。 4.重复2.3.步直到start>end退出递归。

