C++基礎知識易錯點總結(2)

1. 若一組待排數據有序,花費時間最多的是:快速排序,T(n)=O(n^2);spa

2. 有 1000 個無序的整數,但願使用最快的方式找出前 50 個最大的,最佳的選擇是?操作系統

  • 快速排序:在最理想的狀況下,即劃分可使得每次分到n/2 的兩個序列,複雜度爲o(nlogn);
  • 堆排序:不管什麼狀況都是o(nlogn),固然還有建堆的時間o(n),因此爲n+nlogn,可是,本題只是要前五十個,因此堆排序只須要執行50次就夠了:n+50log;
  • 堆排序相對較好;

3. 處理哈希衝突的方法:排序

  • 開放定址法(線性探測法,線性補償探測法,隨機探測法);
  • 拉鍊法;
  • 創建公共溢出區;
  • 再散列法;

4. 詞法分析器用於識別單詞進程

5. 計算機操做系統出現死鎖的緣由:若干進程因競爭資源而無休止的等待着其餘進程釋放已佔有的資源資源

6. TCP的關閉過程,處於TIME_WAIT狀態的鏈接等待2MSL後真正關閉鏈接table

7. (智力題)賽馬,有25匹馬,每次只能5匹馬進行比賽,比賽只能獲得5匹馬之間的快慢程度,而不是速度,請問,最少要比 1 次,才能得到最快的前3匹馬?class

分析:25匹馬,速度都不一樣,但每匹馬的速度都是定值。如今只有5條賽道,沒法計時,即每賽一場最多隻能知道5匹馬的相對快慢。問最少賽幾場能夠找出25匹馬中速度最快的前3名? 每匹馬都至少要有一次參賽的機會,因此25匹馬分紅5組,一開始的這5場比賽是免不了的。接下來要找冠軍也很容易,每一組的冠軍在一塊兒賽一場就好了 (第6場)。最後就是要找第2和第3名。咱們按照第6場比賽中獲得的名次依次把它們在前5場比賽中所在的組命名爲A、B、C、D、E。即:A組的冠軍是第 6場的第1名,B組的冠軍是第6場的第2名……每一組的5匹馬按照他們已經賽出的成績從快到慢編號: A組:1,2,3,4,5 B組:1,2,3,4,5 C組:1,2,3,4,5 D組:1,2,3,4,5 E組:1,2,3,4,5 從如今所獲得的信息,咱們能夠知道哪些馬已經被排除在3名之外。只要已經能肯定有3匹或3匹以上的馬比這匹馬快,那麼它就已經被淘汰了。能夠看到, 只有上表中粗體的那5匹馬是有可能爲二、3名的。即:A組的二、3名;B組的一、2名,C組的第1名。取這5匹馬進行第7場比賽,第7場比賽的前兩名就是 25匹馬中的二、3名。故一共最少要賽7場。
相關文章
相關標籤/搜索