/**
* 快速排序
* @param a
* @param low
* @param high
* @return
*/
def quickSort(a: Array[Int], low: Int, high: Int): Int = {
// 右边的哨兵为了找到比基准小的,左边哨兵为了比基准大的,然后交换
var i = low
var j = high
if (low > high)
return -1
val key = a(low)
while (i < j) {
// j哨兵大于key
while (a(j) >= key && i < j) {
j -= 1
}
while (a(i) <= key && i < j) {
i += 1
}
// 如果两边都找到了,就交换
if (i < j) {
a(i) = a(i) ^ a(j)
a(j) = a(i) ^ a(j)
a(i) = a(i) ^ a(j)
}
}
// 最后相等的时候,将基准和i和j相等的位置进行交换
a(low) = a(i)
a(i) = key
// 左右两边都调用递归计算
quickSort(a, low, j - 1)
quickSort(a, j + 1, high)
}