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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

快速排序算法思想及实现

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

簡介

快速排序是對冒泡排序的一種改進,是一種分治算法,時間復雜度為O(nlogn)

基本思想

  • 先從數列中取出一個數作為基準數。
  • 分區(qū)過程,將比這個數大的數全放到它的右邊,小于或等于它的數全放到它的左邊。
  • 再對左右區(qū)間重復第二步,直到各區(qū)間只有一個數。
  • Java實現代碼

    import java.util.Arrays;public class Main {public static void main(String[] args){//測試數據int[] nums = new int[10];for(int i=0;i<10;i++)nums[i] = (int)(Math.random()*100);System.out.println("原數組:");Arrays.stream(nums).forEach(num->{System.out.print(num+" ");});quickSort(nums, 0, nums.length-1);System.out.println("\n排序結果:");Arrays.stream(nums).forEach(num->{System.out.print(num+" ");});}public static void quickSort(int[] nums, int low, int high){if(low<high){//以第一個數為基準數,將大于基準數的數放于基準數右側,小于的則放于左側int middle = Qsort(nums, low, high);//對排序后的左部分排序quickSort(nums, low, middle-1);//對排序后的右部分排序quickSort(nums, middle+1, high);}}public static int Qsort(int[] nums, int low, int high){/*** 單次排序* 步驟:* 1.從右往左找出第一個比基準數小的數* 2.從左往右找出第一個比基準數大的數* 3.重復以上,直到low>high*/int middle = nums[low];while(low<high){//從右往左找出第一個比基準數小的數while(low<high&&nums[high]>middle)high--;nums[low] = nums[high];//從左往右找出第一個比基準數大的數while(low<high&&nums[low]<=middle)low++;nums[high]=nums[low];}nums[low] = middle;//返回基準數的索引return low;} }

    參考

    • 快速排序 —— 菜鳥教程

    總結

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

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