最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 數(shù)據(jù)結(jié)構(gòu)與算法 (快速排序法)

 更新時(shí)間:2022年02月07日 17:12:12   作者:學(xué)好c語(yǔ)言的小王同學(xué)?  
這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)與算法(快速排序法),,快速排序法是實(shí)踐中的一種快速的排序算法,在c++或?qū)ava基本類型的排序中特別有用,下面我們一起進(jìn)入文章學(xué)習(xí)更詳細(xì)的內(nèi)容吧,需要的朋友可以參考下

快速排序法:

顧名思議,快速排序法是實(shí)踐中的一種快速的排序算法,在c++或?qū)ava基本類型的排序中特別有用。它的平均運(yùn)行時(shí)間是0(N log N)。該算法之所以特別快,主要是由于非常精練和高度優(yōu)化的內(nèi)部循環(huán)。
快速排序是對(duì)冒泡法的一種改進(jìn)。通過(guò)一趟排序?qū)⒁判虻牡臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另一部分所有的數(shù)據(jù)要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。

示意圖:

這里 定義最左邊元素 為left 最右邊元素為right

p 元素的值 就是 2對(duì)應(yīng)的索引 0 加上 5對(duì)應(yīng)的索引 7 之和 除以2 得到 索引為3 對(duì)應(yīng)的元素7

用左邊大于 7的數(shù)跟右邊小于7的數(shù)進(jìn)行 交換位置 一直進(jìn)行 并且 中間的p也要一直變化位置

直到 排完

代碼實(shí)現(xiàn):

import java.util.Arrays;
?
public class kuaisu {
? ? public static void main(String[] args) {
? ? ? ? int arrays[]=new int[]{2,9,4,7,3,3,6,5};
? ? ? ? sort(arrays,0,arrays.length-1);
? ? ? ? System.out.println(Arrays.toString(arrays));
?
?
? ? }
? public ?static ?void ?sort(int arrays[],int left,int right){
? ? ? ? int l=left ;//給定下標(biāo)
? ? ? ? int r=right;//給定下標(biāo)
? ? ? ? int temp; //定義一個(gè)變量 作為中間值 交換 左右兩邊的元素位置
? ? ? ? int pivot=arrays[(left+right)/2];//中間值
? ? ? ? while(l<r){
? ? ? ? ? ? //在左邊查找小于中間值得元素
? ? ? ? ? ? while(arrays[l]<arrays[pivot]){
? ? ? ? ? ? ? ? l++;
?
? ? ? ? ? ? }
? ? ? ? ? ? //同理在右邊查找大于中間值得元素
? ? ? ? ? ? while(arrays[r]>arrays[pivot]){
? ? ? ? ? ? ? ? r--;
? ? ? ? ? ? }//直到左邊元素大于右邊元素就結(jié)束
? ? ? ? ? ? if(l>=r){
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? temp=arrays[l];
? ? ? ? ? ? arrays[l]=arrays[r];
? ? ? ? ? ? arrays[r]=temp;
? ? ? ? ? ? //交換完arrays[l]=pivot
? ? ? ? ? ? if(arrays[l]==pivot){
? ? ? ? ? ? ? ? r--;
? ? ? ? ? ? }
? ? ? ? ? ? if(arrays[r]==pivot){
? ? ? ? ? ? ? ? l++;
? ? ? ? ? ? }
? ? ? ? ? ? if(r==l){ //要讓左邊元素 往左邊移 右邊元素往右邊移 錯(cuò)開(kāi)
? ? ? ? ? ? ? ? l++;
? ? ? ? ? ? ? ? r--;
? ? ? ? ? ? } //對(duì)左邊進(jìn)行遞歸
? ? ? ? ? ? if(left<r){
? ? ? ? ? ? ? ? sort(arrays,left,r);
? ? ? ? ? ? }//對(duì)右邊進(jìn)行遞歸
? ? ? ? ? ? if(right>l){
? ? ? ? ? ? ? ? sort(arrays,l,right);
?
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

控制臺(tái)輸出結(jié)果 如下:

 到此這篇關(guān)于java 數(shù)據(jù)結(jié)構(gòu)與算法 (快速排序法)的文章就介紹到這了,更多相關(guān)java 數(shù)據(jù)結(jié)構(gòu)與算法 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何為L(zhǎng)ogback日志添加唯一追蹤ID

    如何為L(zhǎng)ogback日志添加唯一追蹤ID

    本文介紹了如何為L(zhǎng)ogback日志添加唯一追蹤ID,以便在測(cè)試和調(diào)試時(shí)更容易定位報(bào)錯(cuò)信息,通過(guò)創(chuàng)建過(guò)濾器和修改配置文件,可以在每個(gè)請(qǐng)求的日志中添加唯一的ID,并將其返回給前端,這樣,當(dāng)用戶反饋報(bào)錯(cuò)時(shí),開(kāi)發(fā)人員可以根據(jù)ID快速定位和解決問(wèn)題
    2024-12-12
  • 2024.1.2 安裝JDK和Eclipse并配置java編譯環(huán)境的過(guò)程

    2024.1.2 安裝JDK和Eclipse并配置java編譯環(huán)境的過(guò)程

    這篇文章主要介紹了2024.1.2 安裝JDK和Eclipse并配置java編譯環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • SpringMVC之@InitBinder注解詳解

    SpringMVC之@InitBinder注解詳解

    這篇文章主要介紹了SpringMVC之@InitBinder注解詳解,springmvc并不是能對(duì)所有類型的參數(shù)進(jìn)行綁定的,如果對(duì)日期Date類型參數(shù)進(jìn)行綁定,就會(huì)報(bào)錯(cuò)IllegalStateException錯(cuò)誤,需要的朋友可以參考下
    2024-01-01
  • java獲取客服端信息的方法(系統(tǒng),瀏覽器等)

    java獲取客服端信息的方法(系統(tǒng),瀏覽器等)

    下面小編就為大家?guī)?lái)一篇java獲取客服端信息的方法(系統(tǒng),瀏覽器等)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • java ThreadPoolExecutor 并發(fā)調(diào)用實(shí)例詳解

    java ThreadPoolExecutor 并發(fā)調(diào)用實(shí)例詳解

    這篇文章主要介紹了java ThreadPoolExecutor 并發(fā)調(diào)用實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • java中類和對(duì)象的詳細(xì)介紹

    java中類和對(duì)象的詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于java中類和對(duì)象的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • JavaWeb實(shí)戰(zhàn)之用Servlet+JDBC實(shí)現(xiàn)用戶登錄與注冊(cè)

    JavaWeb實(shí)戰(zhàn)之用Servlet+JDBC實(shí)現(xiàn)用戶登錄與注冊(cè)

    這篇文章主要介紹了JavaWeb實(shí)戰(zhàn)之用Servlet+JDBC實(shí)現(xiàn)用戶登錄與注冊(cè),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • java教程之java繼承示例詳解

    java教程之java繼承示例詳解

    這篇文章主要介紹了java繼承示例詳解,需要的朋友可以參考下
    2014-04-04
  • 淺談java常量池

    淺談java常量池

    下面小編就為大家?guī)?lái)一篇淺談java常量池。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • 一文了解Java動(dòng)態(tài)代理的原理及實(shí)現(xiàn)

    一文了解Java動(dòng)態(tài)代理的原理及實(shí)現(xiàn)

    動(dòng)態(tài)代理指的是,代理類和目標(biāo)類的關(guān)系在程序運(yùn)行的時(shí)候確定的,客戶通過(guò)代理類來(lái)調(diào)用目標(biāo)對(duì)象的方法,是在程序運(yùn)行時(shí)根據(jù)需要?jiǎng)討B(tài)的創(chuàng)建目標(biāo)類的代理對(duì)象。本文將通過(guò)案例詳細(xì)講解一下Java動(dòng)態(tài)代理的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-07-07

最新評(píng)論

民勤县| 上杭县| 望都县| 康定县| 同仁县| 兴化市| 龙川县| 宝鸡市| 茶陵县| 老河口市| 邛崃市| 银川市| 措美县| 东光县| 乾安县| 连州市| 萍乡市| 昌吉市| 武陟县| 阳江市| 平罗县| 上虞市| 秦安县| 清流县| 宜州市| 宝清县| 雷州市| 什邡市| 准格尔旗| 修文县| 海安县| 双流县| 平定县| 安宁市| 黄陵县| 浦江县| 泾阳县| 舞阳县| 济源市| 措美县| 永登县|