分治演算法二(快速排序)

2021-06-14 06:18:00 字數 1354 閱讀 8180

快速排序是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個元素也調整到排序後的正確位置。最...