计算机二级公共基础知识(一)——数据结构与算法
生活随笔
收集整理的這篇文章主要介紹了
计算机二级公共基础知识(一)——数据结构与算法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 數(shù)據(jù)結(jié)構(gòu)與算法
- 【1】算法的概念
- 【2】算法的復(fù)雜度
- 【3】數(shù)據(jù)結(jié)構(gòu)
- 【4】邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)
- 【5】線性結(jié)構(gòu)和非線性結(jié)構(gòu)
- 【6】線性表及其順序存儲(chǔ)結(jié)構(gòu)
- 【7】線性鏈表
- 【8】棧
- 【9】隊(duì)列
- 【10】樹
- 【11】二叉樹的性質(zhì)
- 【12】滿二叉樹和完全二叉樹
- 【13】完全二叉樹的性質(zhì)
- 【14】二叉樹的遍歷
- 【15】順序查找
- 【16】二分查找
- 【17】排序
數(shù)據(jù)結(jié)構(gòu)與算法
【1】算法的概念
- 算法:指一組有窮的指令集,是解題方案的準(zhǔn)確而完整的描述
- 算法的特征:
- 算法的組成要素:算法 = 數(shù)據(jù)對(duì)象運(yùn)算和操作 + 控制結(jié)構(gòu)
- 算法的基本運(yùn)算和操作:算術(shù)運(yùn)算、邏輯運(yùn)算、關(guān)系運(yùn)算、數(shù)據(jù)傳輸
- 算法的基本控制結(jié)構(gòu):順序、選擇、循環(huán)
- 算法的基本設(shè)計(jì)方法:引舉法、歸納、遞推、遞歸、減半遞推技術(shù)
【2】算法的復(fù)雜度
- 算法效率的質(zhì)量——算法的復(fù)雜度:時(shí)間復(fù)雜度和空間復(fù)雜度
時(shí)間復(fù)雜度和空間復(fù)雜度并不相關(guān)
【3】數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù):客觀事物的符號(hào)表示
- 數(shù)據(jù)元素:數(shù)據(jù)元素是數(shù)據(jù)的基本單位
- 數(shù)據(jù)對(duì)象:性質(zhì)相同的數(shù)據(jù)元素的集合
- 數(shù)據(jù)結(jié)構(gòu):某一數(shù)據(jù)對(duì)象中,所有數(shù)據(jù)或成員之間的關(guān)系組合的集合
【4】邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)
- 數(shù)據(jù)的邏輯結(jié)構(gòu):數(shù)據(jù)元素之間的關(guān)系描述。與數(shù)據(jù)的存儲(chǔ)無關(guān)、面向問題、獨(dú)立于計(jì)算機(jī)
- 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu):也叫物理結(jié)構(gòu),計(jì)算機(jī)中的存儲(chǔ)方式,面向計(jì)算機(jī)
- 邏輯結(jié)構(gòu)可對(duì)應(yīng)多個(gè)存儲(chǔ)結(jié)構(gòu)
- 常見的存儲(chǔ)結(jié)構(gòu):順序、鏈接、索引(不同的存儲(chǔ)結(jié)構(gòu),處理的效率不同)
【5】線性結(jié)構(gòu)和非線性結(jié)構(gòu)
- 線性結(jié)構(gòu):有且只有一個(gè)根節(jié)點(diǎn);每一個(gè)節(jié)點(diǎn)最多一個(gè)前件和一個(gè)后件
- 非線性結(jié)構(gòu)
- 線性結(jié)構(gòu):棧、隊(duì)列、雙向鏈表
- 非線性結(jié)構(gòu):樹、二叉樹
【6】線性表及其順序存儲(chǔ)結(jié)構(gòu)
- 線性表是由一組數(shù)據(jù)元素構(gòu)成、數(shù)據(jù)元素只取決于自己序號(hào)
- 復(fù)雜線性表:
- 非線性表的結(jié)構(gòu)特征:
- 線性表的順序存儲(chǔ)結(jié)構(gòu)特特點(diǎn):
- 順序表的運(yùn)算:查找、刪除、插入
【7】線性鏈表
- 鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
- 每一個(gè)節(jié)點(diǎn):
- 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間可以不連續(xù)
- 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)可以用于線性結(jié)構(gòu)也可以用于非線性結(jié)構(gòu)
【8】棧
- 棧:一種特殊的線性表,只允許在表的一端插入和刪除元素(棧頂)
- 棧是一種后進(jìn)先出線性表
- 棧具有記憶功能
- 棧的基礎(chǔ)運(yùn)算:
(1)入棧:棧頂插入元素
(2)退棧:棧頂刪除元素
(3)讀棧頂元素:將棧頂元素賦給一個(gè)指定的變量,此時(shí)指針無變化
【9】隊(duì)列
- 隊(duì)列:特殊的線性表
(1)隊(duì)尾rear:插入元素
(2)隊(duì)頭front:刪除元素(front指向隊(duì)頭元素的前一個(gè)位置)
(3)先進(jìn)先出
- 隊(duì)列的存儲(chǔ)結(jié)構(gòu):
順序存儲(chǔ):一維數(shù)組
鏈?zhǔn)酱鎯?chǔ):線性鏈表
- 隊(duì)列的順序存儲(chǔ)結(jié)構(gòu):一般采用循環(huán)隊(duì)列
s=0:空隊(duì)列
s=1且front=rear:隊(duì)滿
- 循環(huán)隊(duì)列的元素個(gè)數(shù):rear - front(若為負(fù),則加上容量)
【10】樹
- 樹:非線性結(jié)構(gòu),n個(gè)節(jié)點(diǎn)的集合
- 葉子節(jié)點(diǎn):度為0,最后一層
- 根節(jié)點(diǎn)在第一層
【11】二叉樹的性質(zhì)
- 二叉樹的第K層上:==2^(k-1)==個(gè)節(jié)點(diǎn)
- 深度為m的二叉樹最多有2^m - 1個(gè)節(jié)點(diǎn)
- 葉子節(jié)點(diǎn)數(shù) = 度為2的節(jié)點(diǎn)數(shù) + 1
- n個(gè)節(jié)點(diǎn)的二叉樹:深度 >=[logn] + 1([logn]代表整數(shù)部分)
【12】滿二叉樹和完全二叉樹
- 滿二叉樹:滿的
- 完全二叉樹:只有最后一層上缺少右邊的節(jié)點(diǎn)
- 滿二叉樹是完全二叉樹,完全二叉樹不是滿二叉樹
【13】完全二叉樹的性質(zhì)
- n個(gè)節(jié)點(diǎn)的完全二叉樹的深度為:等于[logn] + 1
- 完全二叉樹中度為1的節(jié)點(diǎn)數(shù)目:0或1
【14】二叉樹的遍歷
【15】順序查找
以下的兩種情況只能采用順序查找
(1)如果線性表為無序表,則不管是順序存儲(chǔ)結(jié)構(gòu)還是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),只能用順序查找
(2)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),只能用順序查找
【16】二分查找
- 二分查找的條件:順序存儲(chǔ)結(jié)構(gòu)+有序表
- 長度為n有序線性表:最壞情況下二分查找需要logn次(最高效)
【17】排序
- 交換排序
| 冒泡排序 | 最壞情況:n(n-1)/2 |
| 快速排序 | 最壞情況:==n(n-1)/2= |
- 插入排序
| 簡單插入排序 | 最壞情況:n(n-1)/2 |
| 希爾排序 | 最壞情況:O(n^1.5) |
- 選擇排序
| 簡單選擇排序 | 最壞情況:n(n-1)/2 |
| 堆排序 | 最壞情況:O(nlogn) |
除了希爾排序外,堆排序時(shí)間復(fù)雜度最小
總結(jié)
以上是生活随笔為你收集整理的计算机二级公共基础知识(一)——数据结构与算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雷电模拟器7抓包安装证书
- 下一篇: 《创业时,我们在知乎聊什么》- 书摘