快排利用遞迴呼叫,採用分治原理,選擇參照點分成左右兩半相對有序的陣列,再進行遞迴排序。
演算法過程:例如按公升序排列
把陣列的第乙個元素作為參照點,此時第乙個元素已經拿出來了,拿出來的位置相當於"挖空",可以被賦值。
從右往左掃瞄,一直掃瞄,直到有把比參照值要小時就停止,然後賦值給當前左邊指標的位置。
再從左往右掃瞄,一直掃瞄,直到有把比參照值要大時就停止,然後賦值給當前左邊指標的位置。
直到左右位置相同時,返回當前位置,以當前位置再分成兩部分,再分別做遞迴排序。
時間複雜度: o(nlogn), 空間複雜度為o(logn)
#include#include#include#define number 10 //number為陣列的大小
int partition(int ,int ,int);
void quicksort(int ,int,int);
void display(int ,int);
int main()
//從左往右掃瞄
while(num[left]<=pivot && leftleft++;
if(right!=left)
}num[left]=pivot;
return(left);
}//列印陣列
void display(int num,int count)
printf("\n");
}
c 對乙個陣列進行隨機排序
private readonly random random new random region 對乙個陣列進行隨機排序 對乙個陣列進行隨機排序 陣列的型別 需要隨機排序的陣列 public void getrandomarray t arr endregion region 生成乙個指定範圍的隨機...
選擇排序演算法 對乙個陣列進行選擇排序
include include include define number 10 number為陣列的大小 void selectionsort int int void display int int int main srand time null printf 排序前 display num,...
用遞迴演算法判斷乙個陣列是否遞增
本題要求使用遞迴演算法,設陣列為array,則遞迴陣列滿足以下條件。1 如果陣列長度為1,則該陣列為遞增,返回true。2 如果陣列長度為n n 2 則先比較最後兩個元素是否遞增,如果最後兩個元素遞增,則再遞迴比較除去最後乙個元素的前 n 1 個元素是否遞增。具體實現如下 include bool ...