青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 70  文章 - 160  trackbacks - 0

公告:
知識共享許可協議
本博客采用知識共享署名 2.5 中國大陸許可協議進行許可。本博客版權歸作者所有,歡迎轉載,但未經作者同意不得隨機刪除文章任何內容,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 具體操作方式可參考此處。如您有任何疑問或者授權方面的協商,請給我留言。

常用鏈接

留言簿(8)

隨筆檔案

文章檔案

搜索

  •  

積分與排名

  • 積分 - 180018
  • 排名 - 147

最新評論

閱讀排行榜

評論排行榜

已出連載:

1.《隨機化算法(1) — 隨機數》

2.《隨機化算法(2) — 數值概率算法》

正文:

這一章怎么說呢,我個人感覺不好理解,在網上查了一些資料,沒發現有具體對舍伍德算法的介紹。

迄今為止看的最全面的就是王曉東的《計算機算法設計與分析》里講的了。在網上查的一些資料也基本全和這本書上講的一樣,至于是這本書先寫的,還是其他位置先寫的,我就不做評論了。

(有時間我把那本書上講舍伍德的一段給拍下來放到文章里)

書上對舍伍德講的比較詳細,但是不太好理解,一定要多看幾遍。

我這里只說下他的基本思想在一般輸入數據的程序里,輸入多多少少會影響到算法的計算復雜度。這時可用舍伍德算法消除算法所需計算時間與輸入實例間的這種聯系。

 

聯系例子,在快速排序中,我們是以第一個元素為基準開始排序時,為了避免這樣的情況,可以用舍伍德算法解決,也就是使第一個基準元素是隨機的

事先說明下:以后章節,若在代碼中頭文件里包含了RandomNumber.h頭文件,請查看前面寫的《概率算法(1) — 隨機數》里的偽隨機數類RandomNumber.我以后不再提醒。

這是一個非遞歸版的舍伍德快速排序算法:

 /*

* Author: Tanky woo
* Blog:   www.WuTianQi.com
* Date:   2010.12.8
* 舍伍德(Sherwood)算法運用(1) -- 線性時間選擇算法
* 代碼來至王曉東《計算機算法設計與分析》
*/
 
#include 
"RandomNumber.h"
#include 
<iostream>
#include 
<iomanip>
#include 
<time.h>
using namespace std;
const int INF = 9999;
 
// 交換a, b的值
template <typename Type>
void Swap(Type &a, Type &b)
{
    Type temp;
    temp 
= a;
    a 
= b;
    b 
= temp;
}
 
template 
<typename Type>
Type select(Type a[], 
int lt, int rt, int k)
{
    
// 計算a[lt:rt]中第k小元素
    static RandomNumber rnd;
    
while(true)
    {
        
if(lt > rt)
            
return a[lt];
        
int i = lt, j = lt+rnd.Random(rt-lt+1);   // 隨機選擇的劃分基準
        Swap(a[i], a[j]);
        j 
= rt+1;
        Type pivot 
= a[lt];
        
//以劃分基準為軸作元素交換
        while(true)
        {
            
while(a[++i] < pivot);
            
while(a[--j] > pivot);
            
if(i >= j)
                
break;
            Swap(a[i], a[j]);
        }
        
if(j - lt + 1 == k)
            
return pivot;
        a[lt] 
= a[j];
        a[j] 
= pivot;
        
// 對子數組重復劃分過程
        if(j - lt + 1 < k)
            {
                k 
= k - j + lt - 1;
                lt 
= j + 1;
            }
        
else
            rt 
= j - 1;
    }
}
 
template 
<typename Type>
Type Select(Type a[], 
int n, int k)
{
    
// 計算a[0: n-1]中第k小元素
    
// 假設a[n]是一個鍵值無窮大的元素
    if(k < 1 || k > n)
        cerr 
<< "Wrong!" << endl;
    
return select(a, 0, n-1, k);
}
 
int main()
{
    
int arr[7= {325710, INF};
    cout 
<< Select(arr, 64<< endl;
}

 當然,舍伍德算法也不是萬能的。有時也會遇到這樣的情況,即所給的確定性算法無法直接改造成舍伍德型算法。此時可借助于隨機預處理技術,不改變原有的確定性算法,僅對其輸入進行隨機洗牌,同樣可收到舍伍德算法的效果。

以下是隨機洗牌算法:

/*
* Author: Tanky woo
* Blog:   www.WuTianQi.com
* Date:   2010.12.8
* 和舍伍德算法效果類似的一個程序 -- 隨機洗牌
* 代碼來至王曉東《計算機算法設計與分析》
*/
 
#include 
"RandomNumber.h"
#include 
<iostream>
#include 
<iomanip>
#include 
<time.h>
using namespace std;
 
// 交換a, b的值
template <typename Type>
void Swap(Type &a, Type &b)
{
    Type temp;
    temp 
= a;
    a 
= b;
    b 
= temp;
}
 
template 
<typename Type>
void Shuffle (Type a[], int len)
{
    
// 隨機洗牌算法
    static RandomNumber rnd;
    
for (int i = 0; i < len; ++i) 
    {
        
int j = rnd.Random(len-i) + i;      
        Swap (a[i], a[j]) ;    
    }
}
 
template 
<typename Type>
void Print (Type a[], int len)
{
    
for(int i=0; i<len; ++i)
        cout 
<< a[i] << " ";
    cout 
<< endl;
}
 
int main()
{
    
int arr[10];
    
// 原先次序
    for(int i=0; i<10++i)
        arr[i] 
= i+1;
    Print(arr, 
10);
 
 
    
// 第一次洗牌
    Shuffle(arr, 10);
    Print(arr, 
10);
 
    
// 第二次洗牌
    Shuffle(arr, 10);
    Print(arr, 
10);
 
    
return 0;
}

 

 原次序與第一洗牌和第二次洗牌后都不一樣。

說實話,這一章我也很迷糊,如果有問題,歡迎大家指出。

下一章將是:《隨機化算法(4) — 拉斯維加斯(Las Vegas)算法》

Tanky Woo原創,歡迎轉載,轉載請附上鏈接,請不要私自刪除文章內任何關于本博客的鏈接。

Tanky Woo 標簽: 
posted on 2010-12-13 10:04 Tanky Woo 閱讀(2885) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线免费视屏| 久久久久久久尹人综合网亚洲| 一区二区三区蜜桃网| 亚洲国产精品一区二区尤物区| 黄网动漫久久久| 黄色成人免费网站| 亚洲国产精品久久久久婷婷老年| 在线观看国产一区二区| 欧美亚洲综合网| 欧美日本在线播放| 欧美精品在线一区二区| 欧美黄色大片网站| 欧美三级午夜理伦三级中视频| 国产精品福利在线观看网址| 国产精品网站一区| 伊人久久av导航| 久久男人资源视频| 国产一区二区日韩| 在线日韩一区二区| 一本色道久久88综合日韩精品| 亚洲影院在线| 裸体女人亚洲精品一区| 亚洲精品乱码久久久久久黑人| 亚洲国产精品99久久久久久久久| 日韩视频在线一区二区| 亚洲欧美日本国产有色| 久热精品视频在线观看| 欧美日韩亚洲精品内裤| 激情综合色综合久久综合| 99在线热播精品免费| 久久久久久自在自线| 亚洲精选在线观看| 午夜在线一区| 欧美日韩在线播| 亚洲三级网站| 老司机精品视频网站| 亚洲一品av免费观看| 欧美精品v日韩精品v国产精品| 国产亚洲午夜高清国产拍精品| 99热在这里有精品免费| 久久久噜噜噜久久| 一区二区三区视频在线| 欧美国产日本韩| 精品动漫3d一区二区三区免费| 新片速递亚洲合集欧美合集| 亚洲日韩第九十九页| 久热精品在线| 在线观看欧美日本| 久久精品成人| 亚洲免费在线精品一区| 欧美视频精品一区| 99国产精品国产精品久久 | 欧美一区二区黄| 国产精品vvv| 在线一区二区三区四区| 亚洲国产天堂久久国产91| 久久视频精品在线| 精品成人一区二区| 久久久综合网站| 久久精品一区二区三区四区| 国产日韩亚洲欧美综合| 久久精品国产99国产精品| 亚洲欧美伊人| 国内精品99| 免费成人性网站| 麻豆久久久9性大片| 在线成人中文字幕| 老司机午夜精品视频在线观看| 欧美一级久久久久久久大片| 国产视频一区二区三区在线观看| 久久精品91久久久久久再现| 性8sex亚洲区入口| 经典三级久久| 性欧美大战久久久久久久免费观看| 国内成+人亚洲+欧美+综合在线| 亚洲视频精品| 日韩一区二区福利| 欧美伦理一区二区| 一区二区三区欧美视频| 亚洲美女区一区| 国产精品v亚洲精品v日韩精品| 亚洲图片欧美日产| 亚洲欧美激情诱惑| 国产亚洲欧洲997久久综合| 老司机午夜免费精品视频 | 欧美伊人久久| 欧美专区在线播放| 亚洲国产欧美在线| 在线亚洲成人| 国产一区激情| 亚洲精品国产精品乱码不99按摩 | 亚洲一区二区精品在线观看| 亚洲欧美久久| 亚洲全黄一级网站| 亚洲一区区二区| 亚洲成色999久久网站| 9色精品在线| 影音先锋亚洲一区| 一区二区三区产品免费精品久久75 | 亚洲乱码国产乱码精品精天堂| 国产精品视频xxx| 欧美黄色网络| 国产乱人伦精品一区二区| 欧美sm视频| 国产精品一区二区久久久久| 欧美大片免费观看| 国产麻豆9l精品三级站| 亚洲欧洲一区| 国产一区二区三区高清在线观看| 亚洲黑丝在线| 一区二区自拍| 亚洲免费在线观看| 中文av一区特黄| 久久综合一区| 欧美伊久线香蕉线新在线| 欧美精品国产精品| 六月婷婷久久| 国产一区二区0| 亚洲视频精选在线| 在线一区日本视频| 一本色道精品久久一区二区三区| 亚洲国产午夜| 中日韩午夜理伦电影免费| 国产区精品视频| 亚洲欧洲精品一区二区三区波多野1战4 | 国产美女诱惑一区二区| 亚洲国产精品999| 黄色成人片子| 亚洲无线一线二线三线区别av| 99在线|亚洲一区二区| 尤妮丝一区二区裸体视频| 亚洲欧美日韩一区二区三区在线| 亚洲香蕉成视频在线观看| 欧美屁股在线| 亚洲国产免费看| 亚洲激情成人在线| 久久野战av| 欧美激情精品久久久| 亚洲电影下载| 欧美成人免费在线视频| 亚洲黄色小视频| 夜夜精品视频| 欧美日韩视频第一区| 夜夜嗨一区二区| 午夜精品三级视频福利| 国产精品少妇自拍| 午夜欧美大尺度福利影院在线看| 性做久久久久久久久| 国产精品自拍三区| 久久www成人_看片免费不卡| 久久婷婷麻豆| 亚洲久色影视| 国产精品成人一区二区网站软件| 在线视频欧美日韩| 久久黄色影院| 亚洲精品美女91| 国产精品av免费在线观看 | 亚洲欧美日韩国产| 久久久最新网址| 亚洲毛片av在线| 国产精品久久久久久五月尺| 亚洲欧美日韩综合| 欧美成人午夜免费视在线看片| 亚洲精品欧美一区二区三区| 欧美日韩一区免费| 性久久久久久久| 亚洲片国产一区一级在线观看| 一区在线视频观看| 欧美激情在线免费观看| 一区二区三区**美女毛片| 欧美自拍偷拍午夜视频| 亚洲电影一级黄| 国产精品三级久久久久久电影| 久久久久久自在自线| 夜夜嗨av一区二区三区免费区| 久久久久久**毛片大全| 亚洲人成精品久久久久| 国产精品欧美经典| 另类激情亚洲| 亚洲中字黄色| 亚洲福利国产精品| 欧美影院一区| 亚洲视频免费在线观看| 在线观看成人av| 国产精品另类一区| 免费欧美日韩| 午夜精品一区二区三区在线播放 | 欧美激情a∨在线视频播放| 亚洲香蕉网站| 亚洲欧美在线另类| 最新国产乱人伦偷精品免费网站| 亚洲午夜小视频| 亚洲人成网站精品片在线观看| 国产欧美一区二区三区在线老狼 | 国产日韩欧美中文| 欧美日韩综合在线| 欧美本精品男人aⅴ天堂| 欧美一区2区三区4区公司二百 | 看片网站欧美日韩| 香蕉久久夜色精品国产使用方法|