快速排序的Java和Scala实现

来源:互联网 发布:淘宝常见问题 编辑:程序博客网 时间:2024/06/16 19:40

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 < _))  }}
原创粉丝点击