快速排序在實際應用中使用廣泛,效果也高。快排使用的是分治策略,一組序列基於某乙個基準值分成兩個大小的子串行,遞迴排序子串行,最終得到有序的序列。快排的平均時間複雜度為o(nlogn)。
演算法的實現步驟:
1. 在序列中挑選乙個基準值,我們可以預設第乙個數為基準值
2. 從兩邊的數值跟基準值作對比,數值小的放在基準值左邊,數值大的放在基準值右邊
3. 遞迴將小於基準值的子串行和大於基準值的子串行排序
例子:
亂序序列:4,3,9,7,5,6,8,1
圓圈1:原始序列
圓圈2:以第乙個數4為基準值
圓圈3:分成兩個子串行,3、1小於基準值4,7、5、6、8、9大於基準值4,進行遞迴
圓圈4:子串行3、1的基準值為3,子串行7、5、6、8、9的基準值為7
圓圈5:子串行3、1排序後是1、3,遞迴子串行1,只有乙個值直接結束;子串行7、5、6、8、9再分成子串行5、6小於基準值7,子串行8、9大於基準值7,進行遞迴
圓圈6:子串行5、6的基準值為5,子串行8、9的基準值為8
圓圈7:子串行5、6排序後5、6,遞迴子串行6,只有乙個值直接結束;子項8、9排序後8、9,遞迴子串行9,只有乙個值直接結束
實現**:
資料結構與演算法 排序演算法 快速排序
源 cpp view plain copy include void quicksort int int,int intfindposs int int,int intmain quicksort arry,0,6 printf after sorted n for i 0 i 7 i printf...
資料結構與演算法 快速排序
基礎概念 快速排序,聽這個名字就能想到它排序速度比較快方法,是一種分治思想。所謂分治,就是指以乙個數為基準,將序列中的其他數往它兩邊 扔 以從小到大排序為例,比它小的都 扔 到它的左邊,比它大的都 扔 到它的右邊,然後左右兩邊再分別重複這個操作,不停地分,直至分到每乙個分割槽的基準數的左邊或者右邊都...
資料結構與演算法 快速排序
程式 package com.nicchagil.generics.study.no099快速排序 public class quicksort print array,left,right int standardindex left int standard array standardinde...