近日碰到乙個問題,在一百萬的資料內查詢最大的資料的第n到第n+10,立即想到的就是氣泡排序氣泡排序、快速排序等諸多的排序演算法,,但是直覺告訴我似乎這個題目並非只是演算法能夠解決的問題,一百萬的資料用演算法排序一般是及其浪費資源的,尤其是諸如冒泡類的演算法,雖然演算法簡單,但是及其浪費資源
常見演算法的時間複雜度
最後分析題目只是需要最大的n到n+10條資料,那麼好只需要將n+10條資料進行排序,保證n+10條資料是最大的即可,這樣分析題目後就很簡單了,只是需要n+10條排序的資料,那麼這個演算法就很好簡單了,只需要將全部資料內隨機的拿到n+10條資料然後將剩下的全部資料逐個與這n+10條資料進行比較,即可拿到最大的n+10條資料,然後對n+10條資料進行排序演算法演算法複雜度和時間複雜度相比較其他之間將全部資料排序的演算法要節省很多
時間複雜度將近等於ο(n)
小結:遇到問題首先想到各種演算法是乙個程式設計師的本能反應,但是應該弄懂題目,讀懂題目,確認需求並且分析需求尋找乙個最佳解決的途徑或方法!
0到n 1中缺失的數字
一 題目 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0到n 1之內。在範圍0到n 1的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。二 思路 分析易知,陣列形式如下 如果從頭到尾依次比較值與小標是否相等,時間複雜度為o n 效率低。由於是排序陣列,我們繼續考...
好奇的薯隊長(1到n,1的個數)
時間限制 1秒 空間限制 32768k 薯隊長在平時工作中需要經常跟數字打交道,某一天薯隊長收到了乙個滿是數字的 薯隊長注意到這些數字裡邊很多數字都包含1,比如101裡邊包含兩個1,616裡包含乙個1。請你設計乙個程式幫薯隊長計算任意乙個正整數n 0輸入描述 正整數n 0輸出描述 從1到n 包括n ...
輸出1到最大的N位數
from 演算法一 最直觀的演算法,求出最大的n位數是多少,然後乙個迴圈列印。cpp view plain copy void print1tomaxofndigits1 intn 演算法二 字串表示大數 當n很大時,演算法一可能會溢位,所以考慮大數問題一般用陣列或字串。用字串表達數字的時候,最直觀...