大話數據結構——算法

算法:算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,并且每條指令表示一個或多個操作。

為什么把數據結構和算法一起說?
想想羅密歐與朱麗葉,梁山伯和祝英臺,少了一個你總會覺得奇怪吧。

算法的五個基本特性:

  • 輸入:有0個或多個輸入;
  • 輸出:有1個或多個輸出;
  • 有窮性:步驟有限,不能無窮循環下去;
  • 確定性:有確定的含義,不能出現二義性;
  • 可行性:每一步都能通過有限次數完成。

算法設計的要求:

  • 正確性:能正確反映問題,得到問題的正確答案;
  • 可讀性:便于閱讀、理解和交流;
  • 健壯性:即使輸入不合法,算法也能處理,而不是出現異常或中止;
  • 時間效率高和存儲量低:像生活中人們所希望的花最少時間,辦最大的事。

算法效率的度量方法:

  1. 事后統計法:利用測試好的程序和數據,用計算機測試運行時間判斷算法的優劣。這種方法有很大缺陷,必須事先設計好程序,風險大;時間很可能依賴于計算機硬件配置;算法測試的數據選擇困難,如數據量大小會影響運行時間。
  2. 事前分析估算法:在程序編制前,進行估算。取決于以下因素:算法采用的策略、方法(算法好壞的根本);編譯產生的代碼質量(軟件);問題的輸入規模;機器指令執行的速度(硬件條件)。

算法時間復雜度推導方法:

  1. 用行數1取代運行時間中的所有加法常數;例如,f(n)=1,f(n)=5等的時間復雜度都是O(1),也稱為常數街;
  2. 在修改后的運行次數函數中,只保留最高階的項;
  3. 如果最高階存在且不是1,則去除與這個項相乘的常數。
    得到的結果就是大O階。

常見的時間復雜度

常見的時間復雜度所耗費的時間的大小

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386054.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386054.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386054.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java線上培訓班學費一般多少,成長路線圖

前言 眾所皆知的,Linux的核心原型是1991年由托瓦茲(Linus Torvalds)寫出來的,但是托瓦茲為何可以寫出Linux這個操作系統?為什么它要選擇386的計算機來開發?為什么Linux的發展可以這么迅速?又為什么Linux是免費的?以及目前為何有這么多的 Linux版本(…

將visio的圖片插入latex(png格式轉換成eps格式圖片)

EPS和PDF轉換工具:http://www.xdowns.com/tag.asp?keywordEPS%D7%AApdf 這個軟件親測可以轉換,但是,仍然不能插入latex中,就像之前曾嘗試強制改變后綴名轉成eps一樣,效果是不佳的。 樓主的圖是在visio上畫的&#x…

java線程池使用實戰,太牛了!

前言 今天這篇文章中簡單介紹一下一個 Java 程序員必知的 Linux 的一些概念以及常見命令。 如果文章有任何需要改善和完善的地方,歡迎在評論區指出,共同進步!筆芯! 正式開始 Linux 之前,簡單花一點點篇幅科普一下操作…

大數據基礎技術和應用

大數據概述 數據的表現形式: 線下數據信息化:數據庫、文字記錄、照片……互聯網-移動互聯網:網頁數據、用戶行為記錄、數字圖像……傳感器:設備監控、智能家居、攝像頭…… 大數據的4V特征: 大量化(Vol…

java線程池參數面試題,附贈復習資料

前言 作為同時具備高性能、高可靠和高可擴展性的典型鍵值數據庫,Redis不僅功能強大,而且穩定,理所當然地成為了大型互聯網公司的首選。 眾多大廠在招聘的時候,不僅會要求面試者能簡單地使用Redis,還要能深入地理解底…

Hadoop 大數據平臺架構與實踐

初識Hadoop Hadoop是一個開源的分布式存儲分布式計算平臺。 Hadoop核心組成部分: HDFS:分布式文件系統,存儲海量的數據。MapReduce:并行處理框架,實現任務分解和調度。 Hadoop可以用來做什么? 搭建大型…

java線程池有幾種,講的太透徹了

前言 該文檔在Github上收獲40Kstar的Java面試神技(這贊數,質量多高就不用我多說了吧)非常全面,包涵Java基礎、Java集合、JavaWeb、Java異常、OOP、IO與NIO、反射、注解、多線程、JVM、MySQL、MongoDB、Spring全家桶、計算機網絡、…

HIVE入門

Hive概述 什么是 Hive? * Hive 是建立在 Hadoop HDFS 上的數據庫倉庫基礎建構 * Hive 可以用來進行數據庫提取轉化加載(ETL) * Hive 定義了簡單的類似 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據 * Hi…

java線程面試題博客園,超詳細

簡介 HikariCP 是用于創建和管理連接,利用“池”的方式復用連接減少資源開銷,和其他數據源一樣,也具有連接數控制、連接可靠性測試、連接泄露控制、緩存語句等功能,另外,和 druid 一樣,HikariCP 也支持監控…

java編寫斐波那契數列,實戰案例

前言 提到插件,相信大家都知道,插件的存在主要是用來改變或者增強原有的功能,MyBatis中也一樣。然而如果我們對MyBatis的工作原理不是很清楚的話,最好不要輕易使用插件,否則的話如果因為使用插件導致了底層工作邏輯被…

用戶畫像

用戶畫像:標簽化、 用標簽描述用戶行為 用戶畫像:動態信息數據 用戶行為產生的數據:注冊、瀏覽、點擊、購買、簽收、評價 比較重要的行為:購買商品、瀏覽商品、放入購物車、關注商品 用戶畫像的用途:分類統計&…

java編程代寫有哪些平臺,學習路線+知識點梳理

前言 今天剛好有空,跟大家聊聊如何學好算法進大廠。 前兩天一個讀者和我說,他堅持刷算法題2個月,薪資翻番去了他夢寐以求的大廠,期間面字節跳動還遇到了原題…其實據我所知目前國內的大廠和一些獨角獸,已經越來越效仿…

大話數據結構—棧與隊列

棧 一、棧的定義 棧是(stack)是限定盡在表尾進行插入和刪除操作的線性表。 棧又稱為后進先出(Last In First Out)的線性表,簡稱LIFO結構。 二、進棧出棧變化形式 注意: 并不是最新進棧的元素只能最后處棧。如,我們…

【工作感悟】java編程規范pdf下載

前言 要相信,你現在所有的努力和付出都會在將來的某一天回報給你! 首先阿里巴巴作為國內互聯網行業的領頭羊,培養了一代又一代的IT技術人才,很多想進阿里這些互聯網大廠的程序員看中的不僅僅是高薪豐厚的福利待遇,同樣…

大話數據結構——串

串(string)是由零個或多個字符組成的有限序列,又名字符串。 字符串有很多函數,replace、ToUpper、ToLower(轉小寫)、Trim(去掉兩邊空格)、IndexOf(從左到右查找子串的位…

【工作感悟】全網最經典26道Spring面試題總結

開頭 學習如逆水行舟,尤其是IT行業有著日新月異的節奏。 而且現在這個浮躁而又拜金的社會,我相信很多人做技術并非出于熱愛,只是被互聯網的高薪吸引,畢竟技術崗位非常枯燥,不僅要面對奇奇怪怪的需求,還要…

大話數據結構——樹

一、樹的定義 樹(Tree)是n(n>0)個結點的有限集。 n0又稱為空樹。在任意一課非空的樹中:(1)有且僅有一個特定的稱為跟(Root)的結點;(2&#xf…

大話數據結構——圖

圖(Graph)是由定點的又窮非空集合和頂點之間邊的集合組成,通常表示為:G(V,E),其中,G表示一個圖,V是圖G中頂點的集合,E是圖G中邊的集合。 一、各種圖的定義 …

【工作感悟】達內java大數據課程

前言 其實前幾篇文章已經寫了好多有關于Spring源碼的文章,事實上,很多同學雖然一直在跟著閱讀、學習這些Spring的源碼教程,但是一直都很迷茫,這些Spring的源碼學習,似乎只是為了面試吹逼用,我大概問過一些…

大話數據結構——查找

查找(Searching)是根據給定的某個值,在查找表中確定一個其關鍵字等于給定值的數據元素(或記錄)。 一、順序表查找 順序查找又叫線性查找,是最基本的查找技術,它的查找過程是:從表中…