數據結構與算法-概念

計算機從解決數值計算問題到解決生活中的問題
現實生活中的問題涉及不同個體間的復雜聯系
需要在計算機程序中描述生活中個體間的聯系
數據結構主要研究非數值計算程序問題中的操作對象以及它們之間的關系而不是研究復雜的算法

數據結構

基本概念

數據:程序的操作對象,用于描述客觀事物

數據的特點:
-可以輸入到計算機
-可以被計算機程序處理

數據是一個抽象的概念,將其進行分類后得到程序設計語言中的類型。如:int,float,char等等

數據元素:組成數據的基本單位
數據項:一個數據元素由若干數據項組成
數據對象 – 性質相同的數據元素的集合
e.g.

struct _MyTeacher   //一種數據類型
{char	name[32];char	tile[32];int		age;char	addr[128];
};int main21()
{struct _MyTeacher t1; //數據元素struct _MyTeacher tArray[30]; //數據對象memset(&t1, 0, sizeof(t1));strcpy(t1.name, "name"); //數據項strcpy(t1.addr, "addr"); //數據項strcpy(t1.tile, "addr"); //數據項t1.age = 1;
}

數據元素之間不是獨立的,存在特定的關系,這些關系即結構

數據結構指數據對象中數據元素之間的關系

數據結構圖

數據的邏輯結構

指數據元素之間的邏輯關系。即從邏輯關系上描述數據,它與數據的存儲無關,是獨立于計算機的。邏輯結構可細分為4類
數據的邏輯結構

數據的物理結構

數據的物理結構

數據的運算

數據的運算

算法

基本概念

算法是特定問題求解步驟的描述
在計算機中表現為指令的有限序列
算法是獨立存在的一種解決問題的方法和思想
對于算法而言,語言并不重要,重要的是思想

算法和數據結構區別

數據結構只是靜態的描述了數據元素之間的關系
高效的程序需要在數據結構的基礎上設計和選擇算法

程序=數據結構+算法

總結:
算法是為了解決實際問題而設計的
數據結構是算法需要處理的問題載體
數據結構與算法相輔相成

算法特性

  • 輸入:算法具有0個或多個輸入
  • 輸出:算法至少有1個或多個輸出
  • 有窮性:算法在有限的步驟之后會自動結束而不會無限循環
  • 確定性:算法中的每一步都有確定的含義,不會出現二義性
  • 可行性:算法的每一步都是可行的

算法效率的度量

  • 事后統計法
    比較不同算法對同一組輸入數據的運行處理時間
    缺陷

    • 為了獲得不同算法的運行時間必須編寫相應程序
    • 運行時間嚴重依賴硬件以及運行時的環境因素
    • 算法的測試數據的選取相當困難
    • 事后統計法雖然直觀,但是實施困難且缺陷多
  • 事前分析估算
    依據統計的方法對算法效率進行估算
    影響算法效率的主要因素

    • 算法采用的策略和方法
    • 問題的輸入規模
    • 編譯器所產生的代碼
    • 計算機執行速度
  • 大O表示法
    算法效率嚴重依賴于操作(Operation)數量
    在判斷時首先關注操作數量的最高次項
    操作數量的估算可以作為時間復雜度的估算
    常見時間復雜度:
    時間復雜度1
    關系
    時間復雜度2

  • 算法的空間復雜度
    算法的空間復雜度通過計算算法的存儲空間實現
    S(n) = O(f(n))
    其中,n為問題規模,f(n))為在問題規模為nn時所占用存儲空間的函數
    大O表示法同樣適用于算法的空間復雜度
    當算法執行時所需要的空間是常數時,空間復雜度為O(1)

空間與時間的策略

  • 多數情況下,算法執行時所用的時間更令人關注
  • 如果有必要,可以通過增加空間復雜度來降低時間復雜度
  • 同理,也可以通過增加時間復雜度來降低空間復雜度

轉載于:https://www.cnblogs.com/cj5785/p/10664712.html

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

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

相關文章

騰訊聯手聯通推出車聯網“網卡”,打“內容”+“流量”的組合拳

車載生態已經成為了一個兵家必爭之地了,于商業前景而言,這是一個BAT都無法忽視的掘金勝地。 從市場數據來看,全球車聯網市場年復合增長率達到25%,根據汽車之家大數據顯示:自2014年以來,車聯網上市新車型滲…

編程面試中的十個常見錯誤

本文由 伯樂在線 - darkinlight 翻譯自 thegeekstuff。歡迎加入技術翻譯小組。轉載請參見文章末尾處的要求。 身為程序員,你肯定知道和其他技術工作面試比起來,編程工作的面試流程略有不同。 這篇文章會就你在編程面試中應當避免的10個問題展開討…

費曼技巧與博客

費曼技巧與博客 什么是費曼技巧? 費曼技巧是一種學習方法,核心是以教促學。 具體實踐 以學習費曼技巧為例: 確定學習目標為學習費曼技巧。尋找資料(網絡、書籍、報刊等)學習費曼技巧,直到自己認為已經理解了…

阿里云服務器 CentOS 7上-- Docker 安裝 網關(API-Getway)--KONG

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 全程操作按官方文檔來就可以了。 1.將 Kong 連接到 Cassandra 或 PostgreSQL 容器 Kong支持 2 種數據庫:Cassandra 或 Post…

每個程序員都應該了解的內存知識

英文原文:lwn.net,翻譯:開源中國 [編輯的話: Ulrich Drepper最近問我們,是不是有興趣發表一篇他寫的內存方面的長文。我們不用看太多就已經知道,LWN的讀者們會喜歡這篇文章的。內存的使用常常是軟件性能的決定性因子&…

山區建小學

題目描述 政府在某山區修建了一條道路&#xff0c;恰好穿越總共nn個村莊的每個村莊一次&#xff0c;沒有回路或交叉&#xff0c;任意兩個村莊只能通過這條路來往。已知任意兩個相鄰的村莊之間的距離為d_idi?&#xff08;為正整數&#xff09;&#xff0c;其中&#xff0c;0<…

idea debugger console 不見了--還原 console 圖標

1 找了好久&#xff0c;也找不到&#xff0c;調試的時候挺麻煩的。 2 最后發現 有個一個重置&#xff0c;視圖的按鈕。點擊一下就恢復 。 如下圖。轉自&#xff1a;https://blog.csdn.net/changdejie/article/details/64127026

實驗五:任意輸入10個int類型數據,排序輸出,再找出素數

import java.util.Scanner; public class Pxsushu {public static void main(String[] args) {// TODO Auto-generated method stubScanner s new Scanner(System.in);int temp;//對數組事先聲明并創建10個空間int[] a new int[10];//把輸入的數存儲為數組for (int i 0; i &…

Vue筆記(六)——Vue組件通信Vuex

組件通信 vue本身的組件通信 父>子&#xff1a;父組件向子組件傳參或者調用子組件的方法子>父&#xff1a;子組件向父組件傳參或者調用父組件的方法兄弟之間&#xff1a;兄弟組件之間傳參或者調用方法父子通信 傳參 - props思路&#xff1a;定義子組件的屬性&#xff08;…

灼灼夏日 - 遙思故鄉 - 赤子無相忘

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 偶然翻看舊照片&#xff0c; 想起沒有帶過來的一本本詩集、散文集、手抄本、畫冊 ... 想起母親的寄掛 ... 想起父親的沉默 ... 想起少…

錢生錢最好的辦法是什么?

當你養成理財的六種好習慣時&#xff0c;你能錢生錢了。這六種習慣是&#xff1a; 習慣一&#xff1a;記錄財務情況。能夠衡量就必然能夠了解&#xff0c;能夠了解就必然能夠改變。如果沒有持續的、有條理的、準確的記錄&#xff0c;理財計劃是不可能實現的。因此&#xff0c;在…

grid - 隱式命名網格線名稱

1.隱式的指定網格線反向指定了隱式的網格區域名稱&#xff0c;命名的網格區域隱式的命名了網格線名稱. 指定網格區域會給網格區域邊線添加隱式的網格線名稱。這些網格線的命名是基于網格區域來命名&#xff0c;只是在網格區域名稱的后面添加后綴-start或-end. 1 <view class…

前端筆試題小結(一)

前端筆試題小結&#xff08;一&#xff09; 2020-03-13 題目一&#xff1a; 將一個js數組去重。 樣例&#xff1a; 輸入&#xff1a;[ 1, “apple”, 3, “a”, 3, 1, 5, 6, “a”, 4 ] 輸出&#xff1a;[ 1, “apple”, 3, “a”, 5, 6, 4 ] 分析1&#xff1a; 將兩個數組循…

2019-3-1

偽靜態: .html url(^page/(?P<id>\d).html/$,views.page,namepages) /page/1|2|3.html/ | {% url pages 1|2|3 %} 3.request對象 --method,GET,POST --FILES,META,body,path,get_full_path(),is_ajax(),COOKIE,session 4.CBV處理請求的另外一種方式 from django.…

java 使用 new Date() 和 System.currentTimeMillis() 獲取當前 時間戳

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 在開發過程中&#xff0c;通常很多人都習慣使用new Date()來獲取當前時間。 使用起來也比較方便&#xff0c;同時還可以獲取與當前時間…

持幣過節也能讓錢生錢

今天是國慶長假前最后一個交易日。從盤面上看&#xff0c;投資者包括部分基金公司減倉明顯。對于目前大盤高位震蕩&#xff0c;很多人選擇落袋為安&#xff0c;持幣過節&#xff0c;不失為明智之舉。但你知道嗎&#xff0c;持幣過節也能讓錢生錢。今天我就來為各位講講其中的奧…

關于cat命令修改文件內容(導入變量符號以及變量內容)

關于cat命令修改文件內容&#xff08;導入變量符號以及變量內容&#xff09; cat >1.txt<<END $11 $22 $1 $2 END 查看文件內容為&#xff1a; [rootserver04 ~]# cat 1.txt 1 2[rootserver04 ~]# 說明導入的$1,$2自動被解析了。但是當我們想輸入一些變量而不被解析…

Android - AsyncTask你知道多少?

http://www.cnblogs.com/qlky/p/5658070.html 為什么asyncTask最好在主線程初始化&#xff1f;在子線程怎么辦&#xff1f; AsyncTask四個方法的執行順序&#xff1f; mWorker和mFuture對象分別是什么&#xff1f;有什么作用&#xff1f;和doInbackground還有postExecute有什么…

2020-3-15

題目一&#xff1a; 問答 請寫出如下代碼運行后產生的結果&#xff0c;并給出解釋&#xff0c;說明結果是如何得出的。 setTimeout(() > console.log(a)); Promise.resolve().then(() > console.log(b);).then(() > Promise.resolve(c).then((data) > {setTimeout…

Kong-dashboard 安裝 啟動運行

Kong Dashboard 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Kong is a scalable, open source API Layer (also known as a API Gateway, or API Middleware). Kong runs in front o…