排序算法——快速排序
来源:互联网 发布: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
- 排序算法—快速排序
- 排序算法—快速排序
- 排序算法———快速排序
- 排序算法(一)——快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- 经典排序算法——快速排序
- 排序算法——快速排序
- 经典排序算法——快速排序
- 经典排序算法——快速排序
- 排序算法5——快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- c++排序算法——快速排序
- 算法——排序之快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- 微信支付开发流程及注意事项
- html---after和before
- Maven 环境的配置
- 【操作系统】动态分配的实现
- 实时交易与回测关于数据的处理
- 排序算法——快速排序
- GNU C 9条扩展语法
- matlab求变换位置
- 实现js的日期
- atitit 业务 触发器原理. 与事件原理 docx
- servlet/springMVC/spring/Tomcat报错:Servlet mapping specifies an unknown servlet, A child container...
- spring框架之AOP-1
- 【操作系统】进程调度实现
- ssh中action方法不执行导致Dbug无法调试