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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

快速排序法(思想及代码实现)

發布時間:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序法(思想及代码实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速排序思想:

快速排序是對冒泡排序的一種改進,基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對著兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
下圖所示的是按照最后一個數據作為中間數,然后將整個數組分割成兩個部分,代碼所示的內容是取數據的中間數作為分界,然后分割成兩部分。

public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = {-4,10,0,20,-20,1};quickSort(arr, 0, arr.length-1);System.out.println("排序后的數組為:"+Arrays.toString(arr));}public static void quickSort(int[] arr,int left,int right) {int l = left;//最左邊下標int r = right;//最右邊下標int pivot = arr[(left+right)/2];//定義中間值int temp = 0; //臨時變量 交換時使用//while的目的是 將比pivot小的值放在左邊 大的值放在右邊while(l<r) {//在pivot的左邊一直找 找到大于等于pivot的值 才退出while(arr[l] < pivot) {l++;}//在pivot的右邊一直找 知道小于等于pivot的值 才退出while(arr[r] > pivot) {r--;}//如果l大于等于r 說明pivot兩邊的值 已經按照我們需要的順序排好了if(l >= r) {break;}//交換位置temp = arr[l];arr[l] = arr[r];arr[r] = temp;//如果交換完成后 發現arr[l] == pivot 就讓r-- 前移if(arr[l] == pivot) {r--;}//如果交換完成后 arr[r] == pivot 就讓l++ 后移if(arr[r] == pivot) {l++;}}//如果l==r 就l++ r-- 否則會死循環 棧溢出if(l == r) {l++;r--;}//向左遞歸if(left < r) {quickSort(arr, left, r);}//向右遞歸if(right > l) {quickSort(arr, l, right);}}

冒泡排序

插入排序

選擇排序

總結

以上是生活随笔為你收集整理的快速排序法(思想及代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

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