日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java的一段排序代码_Java常见排序算法——快速排序

發(fā)布時間:2023/12/19 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的一段排序代码_Java常见排序算法——快速排序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概念:

通過一趟排序?qū)⒋判蛴涗浄指畛瑟毩⒌膬刹糠?#xff0c;其中一部分記錄的關(guān)鍵字均比另一部分小,則可分別對這兩部分記錄繼續(xù)進(jìn)行排序,直到整個序列有序。

原理:

在數(shù)據(jù)集之中,選擇一個元素作為”基準(zhǔn)”(pivot)。

所有小于”基準(zhǔn)”的元素,都移到”基準(zhǔn)”的左邊;所有大于”基準(zhǔn)”的元素,都移到”基準(zhǔn)”的右邊。這個操作稱為分區(qū) (partition) 操作,分區(qū)操作結(jié)束后,基準(zhǔn)元素所處的位置就是最終排序后它的位置。

對”基準(zhǔn)”左邊和右邊的兩個子集,不斷重復(fù)第一步和第二步,直到所有子集只剩下一個元素為止。

圖解:

例如我們有個一個數(shù)組[29 4 10 11 7]

1.首先我們先選定一個基準(zhǔn)元素,這里我們選擇10作為基準(zhǔn)元素,然后把基準(zhǔn)元素放在最后一個,如果選擇最后一個元素作為基準(zhǔn)元素,那么可以省略

快速排序

29 4 11 7 10

2.從左到右(除了最后的元素),循環(huán)移動小于基準(zhǔn)元素到數(shù)據(jù)開頭,留下大于等于基準(zhǔn)元素的接在后面。

循環(huán)i = 1的時候,找到一個小于基準(zhǔn)元素的元素4

這個時候storeIndex = 1

快速排序

4 29 11 7 10

之后循環(huán)到i=3時7小于10和storeIndex = 1換位置

4 7 11 29 10

這個時候storeIndex = 2

3.再然后,我們把基準(zhǔn)元素放到storeIndex的位置,其他元素位置依次+1得到了我們想要的數(shù)組

4 7 10 11 29

代碼:

public static void qSort(int[] arr, int head, int tail) {

if (head >= tail || arr == null || arr.length <= 1) {

return;

}

int i = head, j = tail, pivot = arr[(head + tail) / 2];

while (i <= j) {

while (arr[i] < pivot) {

++i;

}

while (arr[j] > pivot) {

--j;

}

if (i < j) {

int t = arr[i];

arr[i] = arr[j];

arr[j] = t;

++i;

--j;

} else if (i == j) {

++i;

}

}

qSort(arr, head, j);

qSort(arr, i, tail);

}

算法系列:

完整代碼:

Java和Kotlin代碼我均放在了GitHub上,歡迎Star!

據(jù)說,年輕、顏值高的互聯(lián)網(wǎng)人都點了贊!

總結(jié)

以上是生活随笔為你收集整理的java的一段排序代码_Java常见排序算法——快速排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。