舍伍德型別概率演算法

2021-10-25 05:37:46 字數 726 閱讀 4202

舍伍德型別概率演算法的特點:總能求得問題的乙個解,且所求得的解總是正確的。

【問題描述】設計乙個快速排序的舍伍德型別概率演算法。

【問題解答】快速排序演算法的關鍵在於一次劃分中選擇合適的劃分基準元素,如果基準是序列中最小的(或最大的)元素,則一次劃分後得到的兩個子串行不均衡,使得快速排序的時間效能降低。舍伍德型概率演算法在一次劃分之前根據隨機數在待劃分序列中隨機確定乙個元素作為基準,並把它與第乙個元素交換,則一次劃分後得到期望均衡的而兩個子串行,從而使演算法的行為不受待排序列的不同輸入例項的影響,使快速排序在最壞情況下的時間效能趨近於平均情況的時間效能,即o(

#include #include #include #include using namespace std;

void disp(int a,int n)

cout << endl;

}int randa(int a,int b)

void swap(int &x,int &y)

int partition(int a,int s,int t)

a[i] = a[j]; //將a[j]前移到a[i]的位置

while (i【演算法分析】從中看出,舍伍德版的快速排序就是在確定性演算法中引入隨機性。其優點是計算時間複雜度對所有例項而言相對均勻,但與相應的確定性演算法相比,其平均時間複雜度沒有改進。

舍伍德演算法解決線性時間選擇

一 需求分析 0.問題描述 元素選擇問題的一般提法是 給定線性序集中n個元素和乙個整數k 1 k n 要求找出這n個元素中第k小的元素,即如果將這n個元素依其線性序排列時,排在第k個位置的元素即為要找的元素。當k 1時,就是要找的最小元素 當k n時,就是要找最大元素 當k n 1 2 時,稱為找中...

線性時間元素選擇 舍伍德演算法

如下 randomnumber.h pragma once include include using namespace std const unsigned long maxshort 65536l const unsigned long multiplier 1194211693l const...

舍伍德演算法(轉 用來說明演算法導論題目!!!)

已出 1.隨機化演算法 1 隨機數 2.隨機化演算法 2 數值概率演算法 正文 這一章怎麼說呢,我個人感覺不好理解,在網上查了一些資料,沒發現有具體對舍伍德演算法的介紹。有時間我把那本書上講舍伍德的一段給拍下來放到文章裡 書上對舍伍德講的比較詳細,但是不太好理解,一定要多看幾遍。我這裡只說下他的基本...