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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

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

概念:

通過一趟排序將待排序記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分小,則可分別對這兩部分記錄繼續進行排序,直到整個序列有序。

原理:

在數據集之中,選擇一個元素作為”基準”(pivot)。

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

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

圖解:

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

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

快速排序

29 4 11 7 10

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

循環i = 1的時候,找到一個小于基準元素的元素4

這個時候storeIndex = 1

快速排序

4 29 11 7 10

之后循環到i=3時7小于10和storeIndex = 1換位置

4 7 11 29 10

這個時候storeIndex = 2

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

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!

據說,年輕、顏值高的互聯網人都點了贊!

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。