1. 程式人生 > >[資料結構]演算法基本概念和推導大O階步驟

[資料結構]演算法基本概念和推導大O階步驟

演算法的定義和特性

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

演算法有5個基本特性:

特性 特性描述
輸入輸出 演算法具有零個或多個輸入,至少有一個或多個輸出
有窮性 指演算法在執行有限個步驟之後,自動結束而不會出現無限迴圈,並且每個步驟在可接受時間內完成
確定性 演算法的每一個步驟都具有確定的含義,不會出現二義性
可行性 演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限次數完成

演算法設計的要求

要求 要求描述
正確性 演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性,能正確反映問題的要求、能夠得到問題的正確答案
可讀性 演算法設計的另一目的是為了便於閱讀,理解和交流,可讀性是演算法好壞的重要標誌
健壯性 當輸入資料不合法時,演算法也能做出相關的處理,而不是產生異常或莫名其妙的結果
時間效率高和儲存量低 這一點是毋庸置疑的…

推導大O階方法

演算法時間複雜度,也就是演算法的時間量度。記作:T(n)=O(f(n))。表示隨問題規模n的增大,演算法執行的時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱為時間的複雜度。其中f(n)是問題規模n的某個函式。一般情況下,都是指最壞時間複雜度。

推導大O階方法:

  1. 用常數1取代執行時間中的所有加法常數
  2. 在修改後的執行次數函式中,只保留最高項
  3. 如果最高項存在且不是1,則去除與這個項相乘的常數

常見的時間複雜度消耗時間的大小排列:

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

相關推薦

[資料結構]演算法基本概念推導O步驟

演算法的定義和特性 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示一個或多個操作 演算法有5個基本特性: 特性 特性描述 輸入

資料結構(一):資料結構基本概念演算法的時間空間複雜度

資料結構討論的範疇 計算機技術的兩大支柱:1是資料結構,2是演算法。在某種程度上講,程式設計等同於資料結構+演算法。 程式設計是為計算機設計一組指令集,演算法是解決問題的策略,資料結構是模型。 問

JAVA基礎(61)---資料結構基本概念邏輯結構以及儲存結構

資料結構                    本章的目的:對資料結構有一個大概的瞭解和認知 資料:能夠儲存

[資料結構]樹結構基本概念理解

1.樹的有關基本概念 定義 樹(Tree)是n(n=0)個結點的有限集。n=0時稱為空樹。在任意一棵非空樹中:(1)有且僅有一個特定的稱為根(Root)的結點;(2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集T1、T2、……Tm,其中每一個集合本身又是一棵樹

資料結構基本概念 與順序表連結串列的區別

 1.資料:就是符號  輸入到計算機被計算機加工處理的符號的集合   特點:輸入到計算機  可以被計算機加工處理  2.資料結構把資料分為:數值型別和非數值型別   3.資料元素:組成資料基本元素  

資料結構基本概念

1.1資料結構: 電腦科學是一門研究資料表示和資料處理的科學,在利用計算機進行資料處理時,實際需要處理的資料元素一般有很多。要提高資料處理效率,節省儲存空間,如何組織資料就成了關鍵問題。而資料結構用來反映一個數據的內部構成,即資料由哪些成分構成,以什麼方式和結

資料結構--樹基本概念

樹是一種非線性的資料結構,是由n(n >=0)個結點組成的有限集合。n=0時稱為空樹 (1)每個元素稱為結點(node); (2)有一個特定的結點被稱為根結點或樹根(root)。 (3)除根結點之外的其餘資料元素被分為m(m≥0)個互不相交的集合T1,T2,……T

推導O方法

1、用常數1取代執行時間中的所有加法常數; 2、只保留最高階項; 3、去除最高階項的常數; 常數階是O(1); 線性階是O(n); 對數階是O(logn); 平方階是O(n2); 時間複雜程度: O(1)<O(logn)<O(n)<O(nlogn)<

嚴蔚敏老師版《資料結構》筆記之基本概念術語

1. 什麼是資料結構 如果要寫好一個程式,必須分析待處理的物件的特性和物件之間的關係,這是“資料結構”形成和發展的背景。 “資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和操作等的學科”。   2. 基本概念和術語: (1) 資料(

資料結構(C語言版)讀書筆記1(基本概念術語)

資料: 所有輸入到計算機中,並被計算機程式處理的符號的總稱。 資料元素: 資料的基本單位,在計算機程式中經常被當做一個整體進行考慮和處理 資料物件: 性質相同的資料元素的集合,是資料的一個子集。 資料結構: 相互之間存在一種或多種特定關係的資料元素的集合。這種資料元素之間

資料結構演算法——基本概念與術語

概述  資料、資料元素、資料物件 資料(data)是對客觀事物的符號表示,在電腦科學中是指所有能輸入到計算機中並被計算機程式處理的程式的總稱。 資料元素(data element)是資料的基本單位,在計算機程式中通常作為一個整體進行考慮和處理。一個數據元素可由若干個資料項(data ite

資料結構基礎01-基本概念術語/線性表

本文系列 資料結構基礎01-基本概念和術語/線性表 資料結構基礎02-棧和佇列 基本概念和術語 資料(data): 所有能輸入到計算機中去的描述客觀事物的符號。 數值性資料 非數值性資料(多媒體資訊處理) 資料元素(data element): 資

python資料結構之串——概述基本演算法

概述: 字串(string)簡稱串,也是一種線性結構。在python中和array差不多,因為py的陣列也可以包括各種字元(在C/Java一類的語法中,陣列必須是同一種資料型別的元素)。線性結構,有限序列,是主要特點。串其中可以包含各種元素,也是計算機主要處理的一類物件。因

資料結構作業10—陣列廣義表以及樹的基本概念(選擇題)

2-1已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運算是()。 (2分) A.head(tail(head(tail(tail(L))))) B.head(tail(head(tail(L)))) C.tail(head(head

淺談演算法資料結構: 二 基本排序演算法

本篇開始學習排序演算法。排序與我們日常生活中息息相關,比如,我們要從電話簿中找到某個聯絡人首先會按照姓氏排序、買火車票會按照出發時間或者時長排序、買東西會按照銷量或者好評度排序、查詢檔案會按照修改時間排序等等。在計算機程式設計中,排序和查詢也是最基本的演算法,很多其他的演算法都是以排序演算法為基礎,在一般的資

從小白開始自學資料結構——第十二天【圖及其基本概念鄰接表的定義】

圖的定義 圖是由頂點的有窮非空集合和頂點之間的邊的集合組成,通常表示為:G(V,E). 其中G表示一個圖,V是圖G中頂點的集合,E是圖G中邊的集合。 圖的基本概念: 頂點:

數據結構基本概念術語總結

重新 條件 關系 線性結構 lar 成員 color 插入 的人 在這裏整理一下數據結構一些基本概念和術語,是為了自己以後方便查閱,同時也可以幫助到查閱的人方便查找,因為有些概念性很強的東西的確不是很好記。 什麽是數據結構:數據結構就是按照一定的邏輯組成的一批數據,使用

數據結構基本概念術語

一個數 聲音 物理 基本概念 字符 計算機 值類型 個數 最小 數據:是描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,並輸入給計算機處理的符號集合。數據不僅僅包括整型、實型等數值類型,還包括字符及聲音、圖像、視頻等非數值類型。 數據元素:是組成數據的、有一

Kafka 溫故(二):Kafka的基本概念結構

partition long 先後 導致 topic 創建 -c 標示 文件的 一.Kafka中的核心概念 Producer: 特指消息的生產者Consumer :特指消息的消費者Consumer Group :消費者組,可以並行消費Topic中partition的消息B

資料結構演算法題/將陣列中元素奇數排在前面偶數在後面(前面奇數後面的偶數分別有序)

一個無序整數陣列,對它排序,使其前半部分都為奇數有序,後半部分為偶數有序。 (1)方案1 O(n^2) 基本想法:利用插入排序演算法,對奇偶子序列分別插入排序。用兩個變數把整個陣列分割為三個部分,第一個部分為奇數有序子序列,第二部分為偶數有序子序列,第三部分為未排序子序列。使用兩個變數進行分