这篇文章主要介绍了 JAVA 版排序算法之快速排序, 结合实例形式分析了基于 java 版的遍历递归实现快速排序功能的具体步骤与操作技巧, 需要的朋友可以参考下
本文实例讲述了 JAVA 快速排序实现方法分享给大家供大家参考, 具体如下:
- package com.ethan.sort.java;
- import java.util.Arrays;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- public class QuickSort {
- public static <E extends Comparable<? super E>> List<E> quickSort(List<E> arr) {
- if(arr.size()<=1) {
- return arr;
- }
- E pivot = arr.get(0);
- // 每次递归都会初始化, 每次 list 都不一样
- List<E> less = new LinkedList<E>();
- // 枢轴, 这个集合只有一个元素, 每次都初始化, 都不一样
- List<E> pivotList = new LinkedList<E>();
- List<E> more = new LinkedList<E>();
- for(E i:arr){
- if(i.compareTo(pivot)<0) {
- less.add(i);
- } else if(i.compareTo(pivot)>0) {
- more.add(i);
- } else {
- pivotList.add(i);
- //System.out.println("p---->"+i);
- }
- }
- // 递归
- less = quickSort(less);// 比 pivot 小的
- // 又进行 quicksort, 对 more, 再分成两部分
- more = quickSort(more);
- // 拼接 less pivot more
- less.addAll(pivotList);
- //pv-------->[23], 到最后只有一个元素了
- System.out.println("pv-------->"+pivotList);
- less.addAll(more);
- return less;
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Integer[] arr = {23,2,8,43,22,32,4,5,34};
- List l = quickSort(Arrays.asList(arr));
- Iterator i = l.iterator();
- while(i.hasNext()) {
- System.out.println(i.next());
- }
- }
- }
希望本文所述对大家 java 程序设计有所帮助
来源: http://www.phperz.com/article/18/0227/358984.html