快速排序是c.r.a.hoare於2023年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法(divide-and-conquermethod)。
該方法的基本思想是:
1.先從數列中取出乙個數作為基準數。(選擇方式可以不同)
2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
3.再對左右區間重複第二步,直到各區間只有乙個數。
/* file: quick_sort */
/* 1、find the pivot of the array */
/* 2、divide the array into two subarrays */
/* 3、conquer the two subarrays */
/* 4、the array is sorted,when conquer ended*/
#include#include /************************************==
swap:swap two numbers a and b
***********************************====*/
inline void swap(int* a,int* b)
/************************************==
partition:partition the array from start
to end into two subarrays.
return the pivot of the element
array[start]
***********************************====*/
int partition(int* array, int start, int end)
swap(&array[start], &array[pivot]);
return pivot;
}/************************************==
quicksort:sort the array using quicksort
algorithm.by partition an array
into two subarrays and then
conquer the two subarrays.
***********************************====*/
void quicksort(int* array, int start,int end)
}void main()
}
分治演算法 快速排序
一.演算法思想 假設要對某陣列進行由小 大排序 1 分解 對於亂序陣列a r 訪問範圍 0 r 有r 1個數 取乙個基準元素a p 一般以第乙個數即a 0 為基準 確定某個partition 位置 q 使a q 右邊的數都大於等於a p a q 左邊的數都小於等於a p 2 遞迴分治 分解之後,陣列...
快速排序 分治演算法
基於分治策略的排序在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大 小 的記錄一次就能交換到後 前 面單元,總的比較和移動次數較少。基本思想 對於輸入子陣列a p r 分解 以a p 為基準元素將a p r 劃分成三段a p q 1 a q 和a q 1 r 使得a p q 1 中任一...
排序演算法 快速排序(分治法)
思想 快速排序採用的思想是分治思想。快速排序是找出乙個元素 理論上可以隨便找乙個 作為基準 pivot 然後對陣列進行分割槽操作,使基準左邊元素的值都不大於基準值,基準右邊的元素值 都不小於基準值,如此作為基準的元素調整到排序後的正確位置。遞迴快速排序,將其他n 1個元素也調整到排序後的正確位置。最...