《實用演算法的分析與程式設計》Chapt 2 順序統計演算法與中位元

來源:互聯網
上載者:User
文章目錄
  • 2.1 順序統計的演算法(求第i小元素的演算法)

n個元素集合中,第i個順序統計,即第i小的元素。

中位元,即第n/2小元素

2.1 順序統計的演算法(求第i小元素的演算法)

可以用分治法,參考快速排序的方法:

設第i小元素為s

divide:

A[0...N]

去中樞pivot = A[0]

以pivot為支點,將集合劃分為A[0...J], A[J+1...N],使得前一集合所有元素都小於pivot,後一集合所有元素都大於pivot

conquer:

if(s <= pivot), 在區間1遞迴尋找

if(s > pivot), 在區間2遞迴尋找

combine:

#include <iostream>int split(int arr[], int lo, int hi){    int pivot = arr[lo];    int pos = lo;    for(int i=lo+1; i <= hi; ++i)    {        if(arr[i] < pivot && pos < i)        {            ++pos;            std::swap(arr[pos], arr[i]);        }    }    std::swap(arr[lo], arr[pos]);    return pos;}int find_ith(int arr[], int lo, int hi, int k){    int mid;    if(lo < hi)    {        mid = split(arr, lo, hi);        if(k <= mid)        {            find_ith(arr, lo, mid, k);        }        else if(k > mid)        {            find_ith(arr, mid+1, hi, k);        }    }    return arr[k];}int main(){    int arr[10] ={10, 20, 34, 4, 14, 8, 7, 73, 54, 5};    for(int i = 0; i< 10; ++i)    {        std::cout << "the " << i+1 << "th small element is: " << find_ith(arr, 0, 9, i) << "\n";    }    system("PAUSE");    return 0;}

演算法複雜度分析:O(NlogN)

找第i小元素有線性時間複雜度的演算法,詳細請見《演算法設計技巧與分析》P110

 

2.2 中位元的應用

 

 

 

 

 

 

 

[證明]

 

[例子]石油管的最優位置
    Olay教授正在為一家石油公司諮詢,公司正在計劃建造一條由東向西的管道.滾管道要穿過一個有n口井的油田。從每口井中都有一條噴油管沿最短路徑與主管道直接相連(或南或北)。   

 

 

 

 

 

 

 

    紿定各個井的x座標和Y座標.Olay教授如何才能選擇主管道的最優位置(即使得各噴管長度總和最小的位置?)

[分析]確定上管道最優位置置.實際上就是求n個油井Y座標的中位元;

 

帶權中位元應用:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.