//*****************************快速排序(遞迴)****************************
//遞迴思想:單趟來說,begin找比key大的,end找比key小的,當各自都找到的時候,
// 若begin比end小,則交換兩個資料,然後繼續找,當再找到的時候,如果
// begin比end大,則比較a[begin]和key的值,若a[begin]大於key,說明
// a[begin]的位置應該是key的位置,則交換,然後以key左邊和右邊分別進
// 行相同操作,否則,key的位置不變
int
partsort(
int*
a ,
intleft
, int
right
) }if(
a [begin]>
a [
right
])
else
return
right
; }void
quicksort(
int*
a ,
intleft
, int
right
)
void
quicksorttest() ;
intarr = ;
int_size =
sizeof
(arr) /
sizeof
(arr[0]);
quicksort(arr, 0, _size - 1);
print(arr, _size); }
快速排序的寫法
面試中乙個頻率極高的問題就是要手寫快速排序,實際上涉及下標變換的 極其容易寫錯,基本上涉及整數下標操作的問題都算是難度中等偏上的了。對於一些經典問題,我們要時不時的去練習,這裡給出演算法導論上的和stl中實現的快速排序的兩種不同寫法。template size t partition t a,siz...
遞迴 快速排序 快速排序
問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...
遞迴 氣泡排序的遞迴式寫法
第一次氣泡排序如上圖 比較順序是 01 12 23 34 第二次是 01 12 23 第三次是 01 12 第四次 01 經過這些有限次的比較以後 使得陣列元素有序。遞迴的寫法和思路也是基本相同 先上非遞迴的 基礎氣泡排序 排完序是遞減的有序序列 n是元素個數 for int i 1 i那氣泡排序就...