溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中快速排序法是什么

發(fā)布時間:2022-02-08 09:25:59 來源:億速云 閱讀:111 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)java中快速排序法是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

快速排序法:

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

示意圖:

java中快速排序法是什么

java中快速排序法是什么

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

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

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

直到 排完

java中快速排序法是什么

代碼實現(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; //定義一個變量 作為中間值 交換 左右兩邊的元素位置
        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){ //要讓左邊元素 往左邊移 右邊元素往右邊移 錯開
                l++;
                r--;
            } //對左邊進行遞歸
            if(left<r){
                sort(arrays,left,r);
            }//對右邊進行遞歸
            if(right>l){
                sort(arrays,l,right);
 
            }
        }
    }
}

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

java中快速排序法是什么

關(guān)于“java中快速排序法是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI