<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
線性查詢,肯定是以線性的方式,在集合或陣列中查詢某個元素。
什麼叫"線性"?還是在程式碼中體會吧。
首先需要一個集合或陣列,如何得到呢?就生成一個固定長度的亂陣列吧。然後輸入一個查詢key,如果找到就返回元素的索引,沒找到就返回-1,就這麼簡單。
class Program { private static int[] arr; private static Random r = new Random(); static void Main(string[] args) { SeedData(10); ShowArray(); Console.WriteLine("n"); Console.WriteLine("請輸入要查詢的整型數"); var temp = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("您要查詢的{0}所在的位置是{1}", temp, LinearSearch(temp)); Console.ReadKey(); } //線性查詢 private static int LinearSearch(int key) { for (int i = 0; i < arr.Length; i++) { if (arr[i] == key) return i; //找到就返回索引 } return -1;//如果沒找到就返回-1 } //陣列的種子資料 private static void SeedData(int size) { arr = new int[size]; for (int i = 0; i < size; i++) { arr[i] = r.Next(1, 100); } } //列印陣列的所有元素 private static void ShowArray() { foreach (var item in arr) { Console.Write(item + " "); } } }
以上,我們自己可以定義什麼叫"線性查詢"了。就是說,當我們輸入一個查詢的key,是按順序依次查詢集合中的每個元素(實際是通過迴圈遍歷),如果找不到就返回一個值,比如-1,如果找到就返回該元素的索引位置。
線性查詢只是查詢的一種最簡單的演演算法,還有其它相對複雜的演演算法。如何來衡量各種演演算法的效率呢,答案是用"時間複雜度"來衡量的。任何的概念來源於實踐,並不是憑空產生的,"時間複雜度"也一樣。
假設一個陣列中有10個元素,需要比較第一個元素是否等於第二個元素,演演算法只需要執行一次就可以得出結果。如果陣列中有100個元素呢?演演算法還是執行一次就得到結果。於是,人們就想:演演算法的執行和陣列大小沒有關係,就把這種演演算法叫做"常數執行時間"吧。但還不夠直觀,用什麼圖形表示呢?人們想出就用O(1)來表示吧。
O(1)雖然很直觀,但很容易產生歧義。有些人認為:只有演演算法執行一次,並且執行的次數不隨陣列大小改變,就可以用O(1)表示了。這是很明顯的"望文生義"。O(1)更準確的解釋是:演演算法的執行次數是一個常數,不會隨著陣列大小而改變。
生活的精彩來自多樣性。假設一個陣列中還是10個元素,需要比較第一個元素是否等於陣列中任何其它元素,演演算法需要執行9次。如果陣列中有100個元素呢,演演算法需要執行99次,也就是n-1次,演演算法執行的次數隨著n的不同而發生改變。人們把這種演演算法寫成O(n),1可以忽略不計,讀成"n階"。
假設還有一種演演算法,需要比較陣列中的任何元素於其它元素是否相等。第一個元素,需要和後面n-1個元素比較,第二個元素需要和除了第一個元素之外的其後面n-2個元素比較......也就是:(n-1) + (n-2) + ... + 2 + 1,這個公式用筆在紙上簡單推算一下,還可以提煉為n²/2-n/2,隨著n的增大,常數因子可以忽略,寫成O(n²),稱為"平方執行時間",讀成"n²階"。
當n是幾萬,O(n²)演演算法在今天每秒執行幾十億次的個人計算機上,不會有明顯的效能影響。但如果n變成幾百萬,就要求幾萬億次計算,這樣可能要幾個小時來執行。更有甚者,如果n變成幾十億,計算需要幾十年來完成。所以,每種演演算法都有它的適用範圍。
現在,可以稍微完整地定義"時間複雜度"了,它是一個函數,定量描述了演演算法的執行時間。時間複雜度是在最壞情況下的時間複雜度。
常見的時間複雜度有:
是解決特定問題求解步驟的描述。在計算機中表現為指令的有限序列,並且每條指令表示一個或多個操作。
sum = 1 + 2 + 3 + ... + 100 sum = 100 + 99 + 98+ ... + 1 2*sum = 101*100 = 10100 sum = 5050
以上就是針對1到100求和的演演算法。對,是在18世紀,一個德國的小村莊,一個叫高斯的小孩想出來的,就這麼神奇!
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對it145.com的支援。如果你想了解更多相關內容請檢視下面相關連結
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45