八大排序算法---快速排序原理及代码
生活随笔
收集整理的這篇文章主要介紹了
八大排序算法---快速排序原理及代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
冒泡排序
選擇排序
直接插入排序
希爾排序
歸并排序
基數排序
堆排序
快速排序
分治法:比大小,再分區
1.從數組中取出一個數,作為基準數。
2.分區:將比這個數大或等于的數全放到他的右邊,小于他的數全放到他的左邊。
3.再對左右區間重復第二步,直到各區間只有一個數。
實現思路
挖坑填數
1.將基準數挖出形成第一個坑。
2.由后向前找比他小的數,找到后挖出此數填到前一個坑中。
3.由前向后找比他大或等于的數,找到后也挖出此數填到前一個坑中。
4.再重復執行2,3兩步驟。
例如對5391672408進行排序
挖坑填數方法
package com.sort;import java.util.Arrays;public class kuaisu_sort {public static void main(String[] args) {//定義一個數組int[] arr={10,3,5,6,1,0,100,40,50,8,-1,200};//調用工具類,進行快速排序 傳入數組,傳入起始位置,傳入結束位置quickSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}//快速排序public static void quickSort(int[] arr, int start, int end){//找出分左右兩區的索引位置,然后對左右兩區進行遞歸調用if (start<end){int index=getIndex(arr,start,end);quickSort(arr, start, index-1);quickSort(arr, index+1, end);}}// 1.將基準數挖出形成第一個坑。 // // 2.由后向前找比他小的數,找到后挖出此數填到前一個坑中。 // // 3.由前向后找比他大或等于的數,找到后也挖出此數填到前一個坑中。 // // 4.再重復執行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){//由后向前找比他小的數,找到后挖出此數填到前一個坑中。while(i<j&&arr[j]>=x){j--;}if (i<j){arr[i]=arr[j];i++;}//由前向后找比他大或等于的數,找到后也挖出此數填到前一個坑中。while(i<j&&arr[i]<x){i++;}if (i<j){arr[j]=arr[i];j--;}}arr[i]=x;return i;} }總結
以上是生活随笔為你收集整理的八大排序算法---快速排序原理及代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年中质协六西格玛通过率年度总结
- 下一篇: App启动时三种效果(黑屏白屏、背景图片