日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机二级公共基础知识(一)——数据结构与算法

發(fā)布時(shí)間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机二级公共基础知识(一)——数据结构与算法 小編覺得挺不錯(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)確而完整的描述
  • 算法的特征:
  • 確定性:每一個(gè)步驟都有明確的意義
  • 有窮性:算法必須能在有限的時(shí)間內(nèi)做完
  • 可行性:精確性
  • 擁有足夠的情報(bào)
    • 算法的組成要素:算法 = 數(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ù)雜度:執(zhí)行算法所需的計(jì)算工作量(通常一個(gè)算法所用的時(shí)間包括編譯時(shí)間和運(yùn)行時(shí)間)
  • 空間復(fù)雜度:執(zhí)行算法所需要內(nèi)存空間
  • 時(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ù)雜線性表:
  • 記錄:若干數(shù)據(jù)元素組成的數(shù)據(jù)元素
  • 文件:若干記錄構(gòu)成的線性表
    • 非線性表的結(jié)構(gòu)特征:
  • 有且只有一個(gè)根節(jié)點(diǎn)
  • 有且只有一個(gè)終節(jié)點(diǎn)
  • 其他節(jié)點(diǎn),只有一個(gè)前件和一個(gè)后件
    • 線性表的順序存儲(chǔ)結(jié)構(gòu)特特點(diǎn):
  • 所有元素占用空間連續(xù)
  • 各元素的存儲(chǔ)空間中是按邏輯順序依次存放
    • 順序表的運(yùn)算:查找、刪除、插入

    【7】線性鏈表

    • 鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
    • 每一個(gè)節(jié)點(diǎn):
  • 數(shù)據(jù)域:存儲(chǔ)數(shù)據(jù)元素
  • 指針域:存放指針
    • 鏈?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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。