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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

快速排序算法 java 实现

發布時間:2023/12/18 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序算法 java 实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速排序算法 java 實現

快速排序算法Java實現
白話經典算法系列之六 快速排序 快速搞定
各種排序算法的分析及java實現

算法概念

快速排序是C.R.A.Hoare于1962年提出的一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide-and-ConquerMethod)。

算法思想

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

    package com.lygedi.sort;public class QuickSort {/*1.將基準數挖出形成第一個坑list[high];2.由前向后找比它大的數,找到后挖出此數填前一個坑list[high]中;3.由后向前找比它小或相等的數,找到后也挖出此數填到前一個坑list[low]中;4.再重復執行2,3二步,直到low==high,將基準數填入list[high]中;-------------------------------------------------------------------也可以理解成pivot、list[low]、list[high]在循環做swap,pivot在開始和結束時起了temp的作用*/public int partition(int[] list,int low,int high){//取出最右邊元素做基準值int pivot = list[high];while(low<high){//從左向右找第一個大于pivot的itemwhile(low<high && list[low]<=pivot){low++;}if(low<high){list[high] = list[low];}//從右向左找第一個小于等于pivot的itemwhile(low<high && list[high]>pivot){high--;}if(low<high){list[low] = list[high];}}//用list[hig]和list[low]都可以,因為low==highlist[high]=pivot;return high;}public void quickSort(int[] list,int low,int high){if(low<high){int position = partition(list,low,high);quickSort(list,low,position-1);quickSort(list,position+1,high);}}public void quickSort(int[] list){if(list.length>0){quickSort(list,0,list.length-1);}} public static void main(String[] args) {int a[]={49,38,65,9,76,13,27,49,8,34,12,64,49,56,2,51,13,5,4,62,99,98,54,56,17,17,18,23,34,56,15,35,25,53,51};QuickSortReserve qs = new QuickSortReserve();qs.quickSort(a);System.out.println(a.length);for(int i=0;i<a.length;i++) System.out.println(Integer.toString(i)+"-"+a[i]); } }

    轉載于:https://www.cnblogs.com/lygbzhu/p/5441839.html

    總結

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

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