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

學習筆記

C++、Linux

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  0 隨筆 :: 1 文章 :: 0 評論 :: 0 Trackbacks

導讀:http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html

 

現在要選擇第k小的數字,一種比較簡單的方法就是先排序,然后根據下標找出第k小的數字,這個時間復雜度為O(nlogn)

selectKth有點類似于快速排序,不過他的時間復雜度為O(n)。(就是導讀中的解法3)

下面是一個運行時間的對比圖,selectKth的運行時間有很明顯的優勢。

 



 

main.cpp
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include "Record.h"
#include "Rand.h"
#include "SelectKth.h"
using namespace std;
const int MaxSize=1000000;
const int Step=5000;
int main()
{
    Record record;
    int A[MaxSize],B[MaxSize],C[MaxSize];
    int curLen,i,kth;
    for(curLen=Step;curLen<MaxSize;curLen+=Step)
    {
        for(i=0;i<curLen;i++)
        {
            A[i]=RandIn(0,1234567);
            B[i]=A[i];
            C[i]=A[i];
        }
        kth=RandIn(0,curLen)+1;
        cout<<curLen<<"\t";
        //sort
        record.StartRecord();
        sort(B,B+curLen);
        cout<<B[kth-1]<<"\t";
        record.PrintCostTime();
        //select kth
        record.StartRecord();
        cout<<"\t"<<SelectKth(C,0,curLen-1,kth)<<"\t";
        record.PrintCostTime();
        cout<<endl;
    }
    return 0;
}

Record.h
#ifndef RECORD__HH
#define RECORD__HH
#include<iostream>
#include<ctime>
#include<fstream>
#include<string>
#include<cstring>
#include<iomanip>
using namespace std;

class Record
{

public:

    Record()
    {
        StartRecord();
    }
    void StartRecord()  {   startTime=clock();  }  /*重置開始時間*/
    void PrintCostTime()
    {
        curTime=clock();
        cout<<(curTime-startTime)/1000;
    }
    private:
    unsigned int startTime,curTime;
};


#endif

Rand.h
#ifndef RAND__HH__HH
#define RAND__HH__HH
#include<cstdlib>
#include<ctime>
using namespace std;
int RandIn(int left,int right)
{

    if(left>=right)
        return left;
    int res=rand();
    res=res%(right-left);
    res+=left;
    return res;
}
#endif

SelectKth.h

template <class T>
int SelectMiddle(T A[],int left,int right)
{
    int middle=((left+right)>>1),p;
    if( A[left]<A[middle] )
    {
        if(A[middle] <= A[right])
            p=middle;
        else    //A[middle] is the biggest
            p=(A[left] < A[right]) ? right :left;
    }
    else    //A[left]>=A[middle]
    {
        if(A[right]>A[left])
            p=left;
        else    //A[left] is the biggest
            p=(A[middle]< A[right]) ? right :middle;
    }
    return p;
}

template <class T>
T SelectKth(T A[],int left,int right,int kth)
{
    int i, store;
    int p=SelectMiddle(A,left,right);
    swap(A[p],A[right]);
    store = left;
    for (i = left; i < right; i++)
        if (A[i] <= A[right])
            swap(A[store++], A[i]);
    swap(A[store], A[right]);
    if(store+1==kth)
        return A[store];
    else if(store+1<kth)
        return SelectKth(A,store+1,right,kth);
    else    //sotre+1>kth
        return SelectKth(A,left,store-1,kth);
}






類別:算法 查看評論
posted on 2011-01-21 22:51 YcdoiT 閱讀(339) 評論(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>
            麻豆精品视频| 在线观看亚洲一区| 欧美午夜视频| 国产精品亚洲第一区在线暖暖韩国| 欧美性jizz18性欧美| 亚洲欧美欧美一区二区三区| 老牛影视一区二区三区| 亚洲国产精品一区二区尤物区 | 亚洲网在线观看| 久久精品国产一区二区三| 欧美成人一区在线| 国产私拍一区| 一区二区三区精品视频| 另类尿喷潮videofree| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品区一区二区三| 久久综合狠狠综合久久激情| 亚洲在线观看视频| 欧美喷水视频| 在线观看91精品国产入口| 久久国产精品黑丝| 夜夜夜精品看看| 欧美高清不卡在线| 亚洲人成亚洲人成在线观看图片| 欧美一区二区性| 亚洲天堂久久| 亚洲黄网站在线观看| 免费在线观看精品| 久久久久.com| 亚洲女同精品视频| 免费在线观看一区二区| 欧美中在线观看| 欧美日韩另类丝袜其他| 亚洲精品一区二区在线| 欧美在线影院在线视频| 欧美成人精品不卡视频在线观看 | 午夜久久福利| 亚洲一区黄色| 中国成人黄色视屏| 一级成人国产| 国产区在线观看成人精品| 欧美影院午夜播放| 欧美午夜电影完整版| 亚洲国产精品va在线看黑人动漫 | 欧美日韩国产麻豆| 亚洲伊人观看| 欧美在线啊v一区| 国产亚洲精品久久飘花| 久久久久高清| 久久一区二区三区av| 亚洲日韩欧美视频| 久久亚裔精品欧美| 免费成人av在线| 国产一区二区看久久| 亚洲男女自偷自拍图片另类| 韩日欧美一区二区| 亚洲国产精品专区久久| 激情久久久久| 亚洲久久一区| 国产免费成人在线视频| 久久久噜噜噜久噜久久| 免费的成人av| 亚洲国产日韩在线一区模特| 亚洲国产日本| 欧美成人小视频| 亚洲人体大胆视频| 国产伦理一区| 亚洲欧美日本视频在线观看| 亚洲国产视频一区二区| 美女视频黄a大片欧美| 欧美成人在线影院| 国产精品视频自拍| 亚洲欧美一区二区三区极速播放 | 亚洲欧洲日夜超级视频| 欧美激情女人20p| 久久久久综合| 尤妮丝一区二区裸体视频| 猫咪成人在线观看| 亚洲精品美女| 欧美一区二区精品久久911| 国产一级一区二区| 老**午夜毛片一区二区三区| 久久av一区| 樱桃成人精品视频在线播放| 欧美成人午夜激情| 一区二区三区日韩欧美精品| 欧美在线一区二区三区| 亚洲激情精品| 国产精品久久9| 亚洲欧洲精品一区二区三区| 韩国av一区二区三区在线观看| 久久五月激情| 艳妇臀荡乳欲伦亚洲一区| 久久国产精品第一页 | 欧美日韩天堂| 久久精品视频网| 亚洲免费成人av电影| 91久久精品一区二区别| 国产精品激情电影| 久久夜色撩人精品| 亚洲欧美成人| 亚洲国产精品久久久久婷婷老年| 亚洲男人的天堂在线aⅴ视频| 国产一区在线播放| 欧美在线观看一二区| 亚洲欧洲精品一区二区三区| 久久精品二区三区| 国产一区二区久久| 欧美日韩视频在线一区二区| 久久久久国内| 欧美肥婆在线| 久久黄色影院| 亚洲一区成人| 国产精品三级视频| 欧美黄色精品| 久久久久免费观看| 性感少妇一区| 久久米奇亚洲| 欧美在线观看www| 中文在线不卡视频| 亚洲日产国产精品| 在线观看成人一级片| 国产一区二区三区四区老人| 欧美日韩综合视频网址| 亚洲欧美激情在线视频| 日韩视频精品在线观看| 亚洲国产精品综合| 欧美激情亚洲自拍| 亚洲国产人成综合网站| 黑人巨大精品欧美一区二区 | 国产精品一区=区| 国产精品国产成人国产三级| 欧美精品在线一区二区三区| 欧美成人国产一区二区| 免费中文字幕日韩欧美| 老司机一区二区| 久久综合精品一区| 裸体一区二区| 免费观看在线综合| 欧美激情1区2区3区| 欧美成人久久| 欧美激情一区二区三区蜜桃视频 | 欧美日韩亚洲一区二区三区在线观看 | 久久欧美中文字幕| 久久精品99国产精品日本| 久久大逼视频| 久久久久久久网| 免费黄网站欧美| 欧美成人高清| 欧美在线播放| 久久天天躁夜夜躁狠狠躁2022| 久久久久久久一区| 欧美成人免费在线观看| 欧美激情区在线播放| 亚洲欧洲日本一区二区三区| 日韩午夜免费| 校园春色国产精品| 久久先锋影音av| 欧美另类极品videosbest最新版本| 欧美黄色一区| 国产精品高清在线观看| 国产一区二区三区在线播放免费观看| 国产一区二区激情| 亚洲精品美女91| 亚洲专区欧美专区| 久久综合99re88久久爱| 亚洲韩国青草视频| 亚洲影院色无极综合| 久久日韩粉嫩一区二区三区| 欧美日韩精品在线| 国产日韩欧美不卡| 亚洲激情电影中文字幕| 亚洲综合999| 久久婷婷久久一区二区三区| 亚洲精品1234| 欧美亚洲综合另类| 午夜久久影院| 欧美激情成人在线| 国产视频久久久久久久| 亚洲精品一区二区在线| 欧美亚洲视频在线观看| 亚洲欧美日本国产有色| 麻豆久久精品| 亚洲性人人天天夜夜摸| 麻豆乱码国产一区二区三区| 久久福利毛片| 亚洲福利专区| 奶水喷射视频一区| 亚洲女同性videos| 欧美国产一区二区| 狠狠色狠狠色综合日日五| 在线视频精品| 亚洲盗摄视频| 久久精品在线视频| 国产乱码精品一区二区三区五月婷| 亚洲毛片av在线| 久久亚洲精品中文字幕冲田杏梨| 亚洲视频精选在线| 小嫩嫩精品导航| 国产精品久久久久久亚洲毛片 |