java代码:
import java.util.Arrays;
/**
* @author bin.zhang
* @version 2017年8月28日 下午2:43:10
*/
public class QuickSort {
/**
* @author bin.zhang
* @param args
*/
public static void main(String[] args) {
int[] arr = { 7, 6, 9, 6, 2, 7, 0, 2 };
System.out.println("排序前:" + Arrays.toString(arr));
sort(arr, 0, arr.length - 1);
System.out.println("排序后:" + Arrays.toString(arr));
}
/**
*
* @author bin.zhang
* @param arr
* @param start
* @param end
* @return idx
*/
public static int partition(int[] arr, int start, int end) {
int base = arr[start];
while (start < end) {
while (arr[end] >= base && start < end) {
end--;
}
arr[start] = arr[end];
while (arr[start] <= base && start < end) {
start++;
}
arr[end] = arr[start];
}
arr[start] = base;
return start;
}
/**
* @author bin.zhang
* @param arr
* @param start
* @param end
*/
private static void sort(int[] arr, int start, int end) {
if (start >= end) {
return;
}
int idx = partition(arr, start, end);
sort(arr, start, idx - 1);
sort(arr, idx + 1, end);
}
}
scala代码:
package a
/**
* Created by bin.zhang on 2017/8/28.
*/
object QuickSort {
def main(args: Array[String]): Unit = {
val sortedList = qSort(List(7, 6, 9, 6, 2, 7, 0, 2))
println(sortedList)
}
def qSort(list: List[Int]): List[Int] = {
if (list.length < 2) list
else qSort(list.filter(list.head > _)) ++ list.filter(list.head == _) ++ qSort(list.filter(list.head < _))
}
}