JAVA版排序算法之快速排序示例
更新時間:2017年01月03日 14:09:19 作者:EthanQ
這篇文章主要介紹了JAVA版排序算法之快速排序,結(jié)合實例形式分析了基于java版的遍歷、遞歸實現(xiàn)快速排序功能的具體步驟與操作技巧,需要的朋友可以參考下
本文實例講述了JAVA快速排序?qū)崿F(xiàn)方法。分享給大家供大家參考,具體如下:
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程序設(shè)計有所幫助。
相關(guān)文章
Java中Collections.sort()排序方法舉例詳解
很多時候都需要對一些數(shù)據(jù)進行排序的操作,這篇文章主要給大家介紹了關(guān)于Java中Collections.sort()方法舉例詳解的相關(guān)資料,使用Collections.sort()可以使用其sort()方法來對List、Set等集合進行排序,需要的朋友可以參考下2024-02-02
Spring?invokeBeanFactoryPostProcessors方法刨析源碼
invokeBeanFactoryPostProcessors該方法會實例化所有BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的實例并且執(zhí)行postProcessBeanFactory與postProcessBeanDefinitionRegistry方法2023-01-01
解決idea使用過程中讓你覺得不爽的一些問題(小結(jié))
這篇文章主要介紹了解決idea使用過程中讓你覺得不爽的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
舉例說明JAVA調(diào)用第三方接口的GET/POST/PUT請求方式
在日常工作和學(xué)習(xí)中,有很多地方都需要發(fā)送請求,這篇文章主要給大家介紹了關(guān)于JAVA調(diào)用第三方接口的GET/POST/PUT請求方式的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01
如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率
這篇文章主要介紹了如何使用pipeline和jacoco獲取自動化測試代碼覆蓋率,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
Java按時間梯度實現(xiàn)異步回調(diào)接口的方法
這篇文章主要介紹了Java按時間梯度實現(xiàn)異步回調(diào)接口,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
詳解context root修改無效web修改項目路徑(eclipse)
這篇文章主要介紹了詳解context root修改無效web修改項目路徑(eclipse)的相關(guān)資料,需要的朋友可以參考下2017-04-04

