<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">快排是实际中应用比较多的排序方式,但如果数组本身有序,则可能产生最差的排序结果,负责度是O(n^2)</span>
如果减少排序复杂度,提高排序性能。
这里给出一种简单易懂的优化方法。
思路:快排在选在基准时,是直接取第一个元素的。
如果数组本身有序,则复杂度是O(n^2)。
如果避开这个问题?
解决方法:在选择基准时,采取随机的方式。
即在partition函数中,修改代码如
randomPartition(int[] array, int low, int high){
Random random = new Random();
int randomIndex = random.nextInt(high + 1);
swap(low, randomIndex);
Partition(array, low, high);
}