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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

八大排序算法---快速排序原理及代码

發(fā)布時間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八大排序算法---快速排序原理及代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

冒泡排序
選擇排序
直接插入排序
希爾排序
歸并排序
基數(shù)排序
堆排序

快速排序

分治法:比大小,再分區(qū)

1.從數(shù)組中取出一個數(shù),作為基準數(shù)。

2.分區(qū):將比這個數(shù)大或等于的數(shù)全放到他的右邊,小于他的數(shù)全放到他的左邊。

3.再對左右區(qū)間重復第二步,直到各區(qū)間只有一個數(shù)。

實現(xiàn)思路

挖坑填數(shù)

1.將基準數(shù)挖出形成第一個坑。

2.由后向前找比他小的數(shù),找到后挖出此數(shù)填到前一個坑中。

3.由前向后找比他大或等于的數(shù),找到后也挖出此數(shù)填到前一個坑中。

4.再重復執(zhí)行2,3兩步驟。

例如對5391672408進行排序

挖坑填數(shù)方法

package com.sort;import java.util.Arrays;public class kuaisu_sort {public static void main(String[] args) {//定義一個數(shù)組int[] arr={10,3,5,6,1,0,100,40,50,8,-1,200};//調(diào)用工具類,進行快速排序 傳入數(shù)組,傳入起始位置,傳入結(jié)束位置quickSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}//快速排序public static void quickSort(int[] arr, int start, int end){//找出分左右兩區(qū)的索引位置,然后對左右兩區(qū)進行遞歸調(diào)用if (start<end){int index=getIndex(arr,start,end);quickSort(arr, start, index-1);quickSort(arr, index+1, end);}}// 1.將基準數(shù)挖出形成第一個坑。 // // 2.由后向前找比他小的數(shù),找到后挖出此數(shù)填到前一個坑中。 // // 3.由前向后找比他大或等于的數(shù),找到后也挖出此數(shù)填到前一個坑中。 // // 4.再重復執(zhí)行2,3兩步驟。private static int getIndex(int[] arr, int start, int end){int i = start;int j = end;int x = arr[i];while (i<j){//由后向前找比他小的數(shù),找到后挖出此數(shù)填到前一個坑中。while(i<j&&arr[j]>=x){j--;}if (i<j){arr[i]=arr[j];i++;}//由前向后找比他大或等于的數(shù),找到后也挖出此數(shù)填到前一個坑中。while(i<j&&arr[i]<x){i++;}if (i<j){arr[j]=arr[i];j--;}}arr[i]=x;return i;} }

總結(jié)

以上是生活随笔為你收集整理的八大排序算法---快速排序原理及代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。