Java實現快速排序

2021-08-29 22:45:55 字數 1166 閱讀 8776

這是我第一次寫部落格,有點小激動,我在csdn看別人寫已經有了一年了,一直在學習別人的,現在我也想自己堅持寫一些部落格,來對自己學習的一次總結。

快速排序是對氣泡排序的一種改進,話不多說,我們先來對來進行排序,我們先選擇乙個數來作為劃分標準,我們就選擇第乙個數『4』來作為劃分標準,通過『4』來進行劃分,序列被分成兩部分,分別為2,3,1和7,8,6,5.然後對這兩個子串行分別用「2」和「7」作為劃分標準,用同樣的方法進行劃分。

public

static

void

sort

(int a[

],int l,int length)

left++;}

else

rigth--;}

}if(k-l>1)

if(length-k>1)

}public

static

void

main

(string[

] args)

;sort

(a,0,8

);for(int i:a)

system.out.

print

(i+" "

);

先建立乙個陣列a,再把最左陣列下標(0)和最右陣列(length-1)下標傳入sort函式中,劃分標準keyword就等於a[0],left從a[1]開始遍歷,rigth就從a[7]開始遍歷,用k來儲存keyword移動後的下標,從右邊起,當a[rigth]小於keyword,a[rigth]和a[k]就進行交換,每遍歷一次right,我們就要遍歷一次left,來確保left和rigth的同步性,這時候我們定義的bool型別judge來確保他們的同步性,直到left>rigth時結束迴圈。

我們進行第一次劃分之後就要來進行第二次劃分就要用到遞迴了,我們遞迴就是把他們分成兩部分再進行劃分,左邊部分為sort(a,l,k-1),右邊部分為sort(a,k+1,length),這時候就要防止陣列下標的越界問題,因為我們的陣列定義的大小只有8,就是下標0-7,這時候我們就要確保左邊部分最後keyword下標k大於最左下標l,右邊部分的length要大於最後keyword下標k。這樣就確保了陣列下標的越界問題。

快排的寫法有很多種,但是核心的思想不會變的,就是對序列進行分別排序,這樣就大大加快了排序演算法的高效性。後面我也會繼續更新一些其他的演算法,希望大家支援!

排序 快速排序(java實現)

快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...

Java實現快速排序

package com.handy.ds public class quicksort for int i 0 i a.length i system.out.print a i system.out.println quicksort qs new quicksort qs.quitsort a,...

java實現快速排序

快速排序是平均速度最快的排序演算法,他的平均時間複雜度 n log n 快速排序採用分治法來進行排序,首先先給出乙個陣列,在一開始隨意選擇乙個數pivot,已pivot作為這個陣列的分界點,把大於pivot的數放在右邊,小於pivot的數放在左邊,然後在已pivot的兩邊分界點,右進行一次上一次的操...