排序演算法之快速排序的實現

2021-10-12 09:59:54 字數 1023 閱讀 1050

快速排序是以分治法的思想,將陣列分為大小兩部分,然後再將兩部分再進行大小分類,依次遞迴,最終達到排序效果。是氣泡排序的改良版,平均時間複雜度:o(n*logn)

流程圖如下(**網路)

**如下:

/*快速排序*/

#include

#define n 10

void

quick_sort

(int a,

int zuo,

int you)

a[left]

=a[right]

;/*將right對應的數給left對應的游標位置值*/

while

(left

<=s)

a[right]

=a[left]

;/*將left對應的數給right對應的游標位置值*/

} a[left]

=s;/*當一趟結束後,left>=right時候,s的值一直沒變都是s[0],將s的值給left對應的地方*/

/*遞迴呼叫*/

quick_sort

(a,zuo,left-1)

;quick_sort

(a,left+

1,you);}

}void

main()

,i;printf

("排序前:");

for(i=

0;i)printf

("%d "

,a[i]);

quick_sort

(a,0

,n-1);

/*呼叫快速排序函式*/

/*傳進去zuo=0,you=9*/

printf

("\n快速排序後:");

for(i=

0;i)printf

("%d "

,a[i]);

}

排序演算法之快速排序的python實現

通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序。快速排序演算法的工作原理如下 1.從數列中挑出乙個元素,稱為 基準 pivot 2.重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺...

排序演算法之快速排序

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出...

排序演算法之快速排序

快速排序入口 public void quicksort int lists 遞迴呼叫該函式。原理 每次從陣列從選乙個標兵 本實現為簡單起見直接選取給定範圍內的第乙個元素為標兵 讓後在給定範圍內進行雙向遍歷,目的是以標兵為分界線,將所有小於標兵值的數字排一邊,將所有大於標兵的數字 放到另一邊。標兵移...