/*公升序快排(隨機數版)*/
int partition(int *arr, int l, int r)
arr[i] = x; //i即為中點
return i;
}/*輔助函式*/
void quick_sort(int *arr, int l, int r)
}
/*降序快排(隨機數版)*/
int partition(int *arr, int l, int r)
arr[i] = x; //i即為中點
return i;
}/*輔助函式*/
void quick_sort(int *arr, int l, int r)
}
/*
第k大數(隨機數版)
*/int partition(int *arr, int l, int r, int k)
arr[i] = x; //i即為中點
if (i - l + 1 == k) return arr[i]; //第k大數
/*第k大數在i的右邊*/
else if (i - l + 1 < k) return partition(arr, i + 1, r, k - (i - l + 1));
/*第k大數在i的左邊*/
else return partition(arr, l, i - 1, k);}/*
/*第k大數(以第乙個元素為基準)*/
int partition(int *arr, int l, int r, int k)
arr[i] = x; //i即為中點
if (i - l + 1 == k) return arr[i];
else if (i - l + 1 < k) return partition(arr, i + 1, r, k - (i - l + 1));
else return partition(arr, l, i - 1, k);}*/
/*第k小數,以第乙個元素為基準*/
int partition(int *arr, int l, int r, int k)
arr[i] = x; //i即為中點
if (i - l + 1 == k) return arr[i];
else if (i - l + 1 < k) return partition(arr, i + 1, r, k - (i - l + 1));
else return partition(arr, l, i - 1, k);
}
演算法導論 快速排序優化演算法!
常見快速排序 時間複雜度最好情況下o nlgn 最壞情況o n2 快速排序是基於分治模式的 分解 陣列a p.r 被劃分成兩個 可能空 子陣列a p.q 1 和a q 1.r 使得a p.q 1 中的每個元素都小於等於a q 而且,小於等於a q 1.r 中的元素。下 標q 也在返個劃分過程中迕行計...
演算法 隨機數
include include include 功能,隨機生成n個隨機數,並按公升序排序 int main void printf 從小到大排列為 n for i 0 i for i 0 i printf 4d arr i return0 這裡生成隨機數的關鍵 includesrand unsign...
演算法導論學習筆記(一)快速排序及優化
快排的偽 quick sort a,p,r 初始呼叫傳入的引數是quick sort a,1,a.length partition的偽 partition a,p,r 演算法維持幾個指標變數,p和r分別指向陣列的首尾元素,i為比基準元素x小的最後乙個元素,j為比基準元素大的最後乙個元素的下乙個。也就...