快速排序法在程式執行時具有平均執行時間短的優勢,並且在記憶體使用 、程式實現複雜性上表現優秀,使得快速排序法在一般情況下成為最實用的排序方法之一。
注:以從左到右從小到大排列為例。
設定乙個基準,將比基準大的資料放在基準的右邊,比基準小的資料放在基準的左邊,並進行遞迴操作反覆選取基準並反覆移動資料,達到排序的目的。
int
quicksort
(int
*arr,
int left,
int right)
//快速排序法 (指定陣列,陣列左端,陣列右端)
//直到左當前位置對應資料大於基準時跳出迴圈,此時應該將此資料交換到基準右邊
while
(arr[rtemp]
>f)
//當右當前位置對應資料大於基準時,進行迴圈
//直到右當前位置對應資料小於基準時跳出迴圈,此時應該將此資料交換到基準左邊
if(ltemp<=rtemp)
//此時應進行資料交換,判斷左當前是否還在右當前左邊,若是則進行以下步驟
//若此判斷條件不成立,則可直接進行以下步驟}if
(ltemp==rtemp)
//排除左當前和右當前指向同一位置的干擾
ltemp++;if
(left//若右當前仍未移到陣列最左端
quicksort
(arr,left,ltemp-1)
;//運用遞迴的方式將陣列左端和左當前-1之間的資料重新排序
if(ltemp//若左當前仍未移到陣列最右端
quicksort
(arr,rtemp+
1,right)
;//運用遞迴的方式將陣列右當前+1和右端之間的資料重新排序
//重複使用遞迴後排序結束
return0;
}
從鍵盤輸入10個整數,按如下要求實現對整型陣列中的元素進行排序:將下標為奇數的資料按降序(從大到小)排序,將下標為偶數的資料按公升序排列。將排序後的結果輸出,每個整數之間使用空格進行分隔。
例如輸入:
0 1 2 3 4 5 6 7 8 9
輸出:0 9 2 7 4 5 6 3 8 1
#include
intquicksort
(int
*arr,
int left,
int right)
;int
main()
j=0; l=0;
for(k=
0;k<
10;k++)if
(k%2==0
)}quicksort
(b,0,4
);quicksort
(c,0,4
);for(j=
4,l=
0;j>
0,l<
5;j--
,l++
)return0;
}int
quicksort
(int
*arr,
int left,
int right)
while
(arr[rtemp]
>f)
if(ltemp<=rtemp)}if
(ltemp==rtemp)
ltemp++;if
(leftquicksort
(arr,left,ltemp-1)
;if(ltempquicksort
(arr,rtemp+
1,right)
;return0;
}
C語言之氣泡排序 快速排序法 希爾排序法
眾所周知程式設計排序方法眾多而且程式的好壞就取決於演算法的使用 下面是博主現在會的幾種排序方法希望對大家有所幫助。希爾排序法 author stylle date 2020 11 14 15 52 03 lasteditors stylle lastedittime 2020 11 14 15 52...
C語言實現快速排序法(分治法)
分治法的基本思想 將原問題分解為若干個更小的與原問題相似的問題,然後遞迴解決各個子問題,最後再將各個子問題的解組合成原問題的解。利用分治法可以將解決辦法分為 三步走 戰略 1 在資料集中選定乙個元素作為 基準 pivot 2 將所有資料集小於基準的元素放在基準左邊,大於基準的元素放在基準右邊,把原資...
Go語言 快速排序法
go 寫法 package main import fmt func main fmt.println freesort arr 1 2 3 4 5 7 9 func freesort arr int int else if v sign if len lefta 0if len righta 0v...