排序算法——快速排序

来源:互联网 发布:linux关闭22端口 编辑:程序博客网 时间:2024/05/02 01:18

快速排序又称划分交换排序,快速排序使用分治法策略来把一个序列分为两个子序列。递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了

这里写图片描述

/*伪代码:method quicksort(list list):    if list.size<2        return list    let pivot=list(0)    let lower=new list    let higher=new list    for each element e in between list(0) and the end of the list:    if e<privot        add e to lower    else add e to higher    let sortedlower=quicksort(lower)        let sortedhigher=quicksort(higher)        return soeredlower+pivot+sortedhigher*/

Java代码

package main.java;import java.util.ArrayList;import java.util.List;/** * DateTime: 2016/10/15 12:34 * 功能:快速排序 * 思路: */public class QuickSort {    public static List<Integer> quickSort(List<Integer> list){        //递归出口        if(list.size()<2) return list;//个数为0或1 时表示已经排好序了        final int index=list.get(0);        final ArrayList<Integer> begin=new ArrayList<>();        final ArrayList<Integer> end=new ArrayList<>();        for ( int i = 1; i <list.size() ; i++ ) {            if(list.get(i)<index){                begin.add(list.get(i));            }else {                end.add(list.get(i));            }        }        ArrayList resultList= (ArrayList) quickSort(begin);        resultList.add(index);        resultList.addAll(quickSort(end));        return resultList;    }}

Junit测试代码

package test.main.java; import main.java.QuickSort;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.util.ArrayList;import static org.junit.Assert.assertArrayEquals;/** * QuickSort Tester. * * @author <Authors name> * @since <pre>ʮ�� 15, 2016</pre> * @version 1.0 */ public class QuickSortTest { @Beforepublic void before() throws Exception { } @Afterpublic void after() throws Exception { } /** * * Method: main(String[] args) * */ @Testpublic void testMain() throws Exception { //TODO: Test goes here... } /** * * Method: quickSort(List<Integer> list) * */ @Testpublic void testQuickSort() throws Exception { //TODO: Test goes here...    Integer[] array={1,2,3,4,5,6,7,8};    ArrayList arrayList=new ArrayList();    arrayList.add(1);    arrayList.add(8);    arrayList.add(4);    arrayList.add(6);    arrayList.add(2);    arrayList.add(5);    arrayList.add(7);    arrayList.add(3);    assertArrayEquals(array, QuickSort.quickSort(arrayList).toArray());}} 

这里写图片描述

1 0