国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C > 正文

深入線性時間復雜度求數組中第K大數的方法詳解

2020-01-26 16:09:23
字體:
來源:轉載
供稿:網友
求數組中第K大的數可以基于快排序思想,步驟如下:
1、隨機選擇一個支點
2、將比支點大的數,放到數組左邊;將比支點小的數放到數組右邊;將支點放到中間(屬于左部分)
3、設左部分的長度為L,
當K < L時,遞歸地在左部分找第K大的數
當K > L時,遞歸地在有部分中找第(K - L)大的數
當K = L時,返回左右兩部分的分割點(即原來的支點),就是要求的第K大的數
以上思想的代碼實現如下:
復制代碼 代碼如下:

/**
線性時間復雜度求數組中第K大數
** author :liuzhiwei
** data   :2011-08-07 
**/
#include "iostream"
using namespace std;
//基于快速排序思想,求數組a中第k大的數,low和high分別為數組的起始和結束位置
//時間復雜度為o(n),n為數組的長度
//1<=k<=n
//如果存在,返回第k大數的下標,否則返回-1
int selectk(int a[], int low, int high, int k)
{
 if(k <= 0)
  return -1;
 if(k > high - low + 1)
  return -1;
 int pivot = low + rand()%(high - low + 1);    //隨即選擇一個支點
 swap(a[low], a[pivot]);
 int m = low;
 int count = 1;
 //一趟遍歷,把較大的數放到數組的左邊
 for(int i = low + 1; i <= high; ++i)
 {
  if(a[i] > a[low])
  {
   swap(a[++m], a[i]);
   count++;              //比支點大的數的個數為count-1
  }
 }
 swap(a[m], a[low]);           //將支點放在左、右兩部分的分界處
 if(count > k)
 {
  return selectk(a, low, m - 1, k);
 }
 else if( count < k)
 {
  return selectk(a, m + 1, high, k - count);
 }
 else
 {
  return m;
 }
}
int main(void)
{
 int a[] = {5, 15, 5, 7, 9, 17,100, 3, 12, 10, 19, 18, 16, 10, 1000,1,1,1,1,1,1,1,1};
 int r = selectk(a, 0, sizeof(a) /sizeof(int) - 1, 5);
 cout<<(r == -1 ? r : a[r])<<endl;
 system("pause");
 return 0;
}

稍微改動一下,就可以修改為求數組中第K小數
完整的代碼如下:
復制代碼 代碼如下:

/**
線性時間復雜度求數組中第K小數
** author :liuzhiwei
** data   :2011-08-07 
**/
#include "iostream"
using namespace std;
//基于快速排序思想,求數組a中第k小的數,low和high分別為數組的起始和結束位置
//時間復雜度為o(n),n為數組的長度
//1<=k<=n
//如果存在,返回第k小數的下標,否則返回-1
int selectk(int a[], int low, int high, int k)
{
 if(k <= 0)
  return -1;
 if(k > high - low + 1)
  return -1;
 int pivot = low + rand()%(high - low + 1);    //隨即選擇一個支點
 swap(a[low], a[pivot]);
 int m = low;
 int count = 1;
 //一趟遍歷,把較小的數放到數組的左邊
 for(int i = low + 1; i <= high; ++i)
 {
  if(a[i]<a[low])
  {
   swap(a[++m], a[i]);
   count++;              //比支點小的數的個數為count-1
  }
 }
 swap(a[m], a[low]);           //將支點放在左、右兩部分的分界處
 if(k < count)
 {
  return selectk(a, low, m - 1, k);
 }
 else if( k > count)
 {
  return selectk(a, m + 1, high, k - count);
 }
 else
 {
  return m;
 }
}
int main(void)
{
 int a[] = {5, 15, 5, 7, 9, 17,100, 3, 12, 10, 19, 18, 16, 10, 1000,1,1,1,1,1,1,1,1};
 int r = selectk(a, 0, sizeof(a) /sizeof(int) - 1, 23);
 cout<<(r == -1 ? r : a[r])<<endl;
 system("pause");
 return 0;
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
成人超碰在线| 国产一级黄色电影| 精灵使的剑舞无删减版在线观看| 88av在线| 国产精品久久久高清免费| 国产一级片麻豆| 国产成人精品综合网站| 亚洲xxxxxx| 国产精品一区二区婷婷| 精品久久九九| 麻豆精品传媒视频观看| √天堂8资源中文在线| 97最新国自产拍视频在线完整在线看| 亚洲私人影吧| 中文字幕在线播放网址| av在线不卡播放| 99视频资源网| 免费看的毛片| 亚洲日本伊人| 777电影在线观看| 日本高清不卡中文字幕| 国产精美视频| 国产九九九九| 日本免费不卡| 香蕉视频在线观看网站| 国产精品秘入口| 国产在线黄色片| 不卡av免费观看| 97在线免费| 国产黄色一级电影| 中文字幕在线永久在线视频| 青青久草在线| www.三区| www.毛片| 女同一区二区免费aⅴ| 五月婷婷视频在线观看| 黄色av电影在线播放| 亚洲精品白浆| www免费在线观看| 欧美日韩一区二区三区在线播放| 91视频黄色| 在线观看的网站你懂的| 99re在线视频| 亚洲综合天堂网| 亚洲成人在线播放| 青青国产在线| 最好2018中文免费视频| 国产一二三在线观看| 国产精品美女视频免费观看软件| 国产久草在线| 天堂中文在线视频| 中文字幕在线免费| 国产日本视频| 99热免费观看| 激情在线视频播放| 国产丝袜在线观看视频| 一区二区精品区| 毛片网站在线观看| 国产视频一二三区| av亚洲男人天堂| 免费不卡中文字幕视频| 国产免费黄色| 免费a级毛片在线观看| 国产精品一区二区三区视频网站| 国产一级在线观看www色| 中文字幕免费中文| аⅴ成人天堂中文在线| 午夜在线小视频| 永久免费不卡在线观看黄网站| 日本免费不卡| 国产粉嫩一区二区三区在线观看| eeuss影影院www在线播放| 中文字幕在线播放网址| 女同一区二区免费aⅴ| 国产激情二区| 久热中文字幕精品视频在线| 国产高清av| 国产精品臀控福利在线观看| 羞羞视频在线免费看| 国产精品久久久久永久免费看| 国产偷窥洗澡视频| 超碰在线影院| 在线视频中文字幕第一页| 国产美女视频一区二区三区| 92国产在线视频| 国产一卡二卡3卡4卡四卡在线| 国产高清大尺度一区二区不卡| 免费a在线看| 国产偷窥洗澡视频| 国产精品午夜久久久久久| 欧美性猛交xxxxbbbb| 在线天堂视频| 国产成人无吗| 国产91足控脚交在线观看| 国产精品视频一区麻豆| 日本天堂影院在线视频| 伊人av免费在线观看| 精品国产丝袜高跟鞋| 国产呻吟对白刺激无套视频在线| 国产麻豆视频网站| 国产免费黄网站| 中文字幕在线看精品乱码| 国产免费一级| 国产一级激情| 国产98在线| 亚洲第一区视频| 日本不卡视频一区二区| 久久五月精品中文字幕 | 四虎影视成人永久免费观看视频| 国产爆初菊在线观看免费视频网站| 国产精品理人伦一区二区三区 | 国内外激情在线| 国产乱子视频| 国产无遮挡又黄又爽免费网站 | 欧美性xxxx交| 国产久草在线| ·天天天天操| a级片国产精品自在拍在线播放| 日日夜夜中文字幕| 国产精选一区二区三区不卡催乳| 最近免费中文字幕大全免费第三页| 1区2区视频| 亚洲视频手机在线观看| 国产字幕在线看| 伊人永久在线| 最近中文字幕在线中文视频| 精品日韩av| 天堂在线免费视频| 香蕉视频在线观看网站| 国产天堂在线| 欧美色欧美亚洲另类二区精品 | 国产网站免费观看| 亚洲精品视频在线免费| 尤物视频在线免费观看| 亚洲成人av高清| 国产激情视频网址| 大香伊人中文字幕精品| 精品国产二区三区| 午夜国产在线| 超碰在线网站| av中文字幕在线看| 国产精品美女一区二区三区四区| 亚洲精品国自产拍在线观看| 国产一区二区三区不卡在线| www.亚洲视频| 精品国产99久久久久久| 成年网站免费入口在线观看| 四虎a级欧美在线观看| 精品亚洲成a人片在线观看| 国产理论在线观看| 久草.com| 美女被人操视频在线观看| 一本大道香蕉8中文在线视频| 国产天堂在线观看| 国产一区二区三区福利| 国产精选一区二区三区不卡催乳| 开心快乐六月丁香婷婷| 人人干人人插| 日本黄在线观看| www.91av| 免费看ww视频网站入口| 激情视频国产| 最近中文字幕mv免费高清电影| 狠狠干天天干| 中文字幕在线观看播放| 国产色视频网站| 精品176二区| 亚洲男人网站| 免费看成年人视频在线观看| 人成在线免费视频| 超碰在线人人| 国产一级片网站| 国产夫妻视频| a级片国产精品自在拍在线播放| 亚洲欧美日韩成人网| 久久久久久久久亚洲精品| 国产一卡二卡3卡4卡四卡在线| 国产精品区一区二| 四虎成年永久免费网站| 黄色av网址在线免费观看| 五月婷婷开心综合| 精品av中文字幕在线毛片| 欧美精品se| 精品视频一区二区观看| 老司机精品视频一区二区| 99视频免费在线观看| 在线视频中文字幕第一页| 超碰在线网站| 9色在线视频网站| 超碰国产在线观看| 国产三级视频| 日本在线天堂| 国产视频xxxx| 黄网站在线观看高清免费| 国产高清在线观看| 国产毛片视频| 免费看的毛片| eeuss影院在线观看| 国产一区二区在线|播放| 久久国产情侣|