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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java快速排序的时间复杂度_java 快速排序

發布時間:2025/4/5 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java快速排序的时间复杂度_java 快速排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路

通過一趟排序,將要排序的數據分隔成獨立的兩部分,其中一部分的所有數據比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此使整個數據變成有序序列。

時間復雜度

最佳情況:T(n) = O(nlogn) 最差情況:T(n) = O(n2) 平均情況:T(n) = O(nlogn)

代碼

import java.util.Arrays;

/**

* 快速排序

* @author remainsu

* @version 1.1 2019-06-04

*/

public class QuickSort {

/**

* 排序方法

* @param arr 要排序的數組

* @param low 小的一邊

* @param high 大的一邊

* @return 排序后的數組,toString 方便輸出

*/

public static String quickSort(int[] arr, int low, int high) {

if(low > high) {

return Arrays.toString(arr);

}

int tmp = arr[low];

int i = low;

int j = high;

while(i < j) {

//先看右邊,依次往左遞減,直到找到小于基準數的數字

while(arr[j] >= tmp && i < j) {

j--;

}

//比基準小的記錄移到低端

arr[i] = arr[j];

//后看左邊,依次往右遞增,直到找到大于基準數的數字

while(arr[i] <= tmp && i < j) {

i++;

}

//比基準大的記錄移到高端

arr[j] = arr[i];

}

//記錄基準

arr[i] = tmp;

//遞歸調用左半數組

quickSort(arr, low, j-1);

//遞歸調用右半數組

quickSort(arr, j+1, high);

return Arrays.toString(arr);

}

public static void main(String[] args) {

int[] arr = {111, 3, 5, 52, 74, 312, 75, 3, 764, 3, 2111, 7, 31};

System.out.println("排序后的數組:"+ quickSort(arr, 0, arr.length-1));

}

}

參考

總結

以上是生活随笔為你收集整理的java快速排序的时间复杂度_java 快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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