主頁 >  其他 > 第10章 內排序

第10章 內排序

2020-10-04 21:39:38 其他

第10章 內排序

目錄
  • 一、排序的基本概念
    • 1.1 排序演算法的記錄存盤結構定義
  • 二、插入排序
    • 2.1 直接插入排序
    • 2.1.1 直接插入排序演算法(演算法)
    • 2.2 二分法(折半)插入排序
    • 2.3 表插入排序(大綱未規定)
    • 2.4 希爾(Shell)插入排序
  • 三、選擇排序
    • 3.1 直接選擇排序
      • 3.1.1 直接選擇排序演算法(演算法)
    • 3.2 樹型選擇排序(大綱未規定)
    • 3.3 堆排序
  • 四、交換排序
    • 4.1 冒泡排序
    • 4.2 快速排序
  • 五、歸并排序
  • 六、基數排序
    • 6.1 多排序碼的排序
    • 6.2 靜態鏈式基數排序
  • 七、各種內部排序演算法的比較(書中未給出)
  • 八、內部排序演算法的應用(書中未給出)
  • 九、演算法設計題
  • 十、錯題集

一、排序的基本概念

  1. 排序:假設一個檔案由 \(n\) 個記錄 \(R_1,R_2,\cdots,R_n\) 組成,以記錄中某個(或幾個)欄位值不減(或不增)的次序把這 \(n\) 個記錄重新排列,稱該欄位為排序碼
  2. 關鍵碼:能唯一標識一個記錄的欄位,關鍵碼可以作為排序碼,但排序碼不一定要是關鍵碼
  3. 穩定排序演算法:任意兩個排序碼相同的記錄 \(R_i\)\(R_j\),如果排序前 \(R_i\)\(R_j\) 的前面,排序后 \(R_i\) 還在在 \(R_j\) 的前面,則該演算法是穩定的排序演算法,否則是不穩定的排序演算法
  4. 注:以下討論的排序,都是以記錄中某個欄位值不減的次序把這 \(n\) 個記錄重新排列,且排序碼資料型別為整型

1.1 排序演算法的記錄存盤結構定義

#define MAXSIZE 100 // 檔案中記錄個數的最大值
typedef int keytype; // 定義排序碼型別為整數型別
typedef struct {
    keytype key;
    // int other; // 此處還可以定義記錄中除排序碼外的其它域
} recordtype; // 記錄型別的定義
typedef struct {
    recordtype r[MAXSIZE + 1];
    int length; // 待排序檔案中記錄的個數
} table; // 待排序檔案型別 

二、插入排序

2.1 直接插入排序

  1. 演算法步驟:

    1. 初始認為檔案中的第 \(1\) 個記錄已排好序
    2. 然后把第 \(2\) 個到第 \(n\) 個記錄依次插入到已排序的記錄組成的檔案中
    3. 對第 \(i\) 個記錄 \(R_i\) 進行插入時,\(R_1,R_2,\cdots,R_{i-1}\) 已排序
      1. 把記錄 \(R_i\) 的排序碼 \(key_i\) 和已經排好序的排序碼從右向左依次比較,找到 \(R_i\) 應插入的位置
      2. 把該位置以后直到 \(R_{i-1}\) 的記錄順序后移,空出位置讓 \(R_i\) 插入
    4. 注:當待插入排序小于所有已排序的排序碼時,可能會出現下標越界,因此可以在排序檔案的第一個排序碼前插入一個值作為哨兵
  2. 圖10-2-直接插入排序演算法的執行程序示意圖:

2.1.1 直接插入排序演算法(演算法)

void insertsort(table *tab) {
    int i, j;
    // 依次插入從第2個開始的所有元素
    for (i = 2; i <= tab->length; i++) {
        j = i - 1;
        tab->r[0].key = tab->r[i].key; // 設定哨兵,準備找插入位置

        // 找插入位置并后移
        while (tab->r[0].key < tab->r[j].key) {
            tab->r[j + 1].key = tab->r[j].key; // 后移
            j = j - 1; // 繼續向前(左)查找
        }
        tab->r[j + 1].key = tab->r[0].key; // 插入第i個元素的副本,即前面設定的哨兵
    }
}

時間復雜度:\(O(n^2)\)

2.2 二分法(折半)插入排序

  1. 演算法步驟:

    1. 注:依據直接插入排序的思想,進行擴充
    2. 在找第 \(i\) 個記錄的插入位置時,由于前 \(i-1\) 個記錄已排好序,因此在插入程序中使用二分法確定 \(key[i]\) 的插入位置
  2. 演算法代碼:略

2.3 表插入排序(大綱未規定)

2.4 希爾(Shell)插入排序

  1. 演算法步驟:
    1. \(n\) 個記錄進行排序,首先取一個整數 \(d<n\),把這個 \(n\) 個記錄分成 \(d\)
    2. 所有位置相差為 \(d\) 的倍數的記錄分在同一組
    3. 在每組中使用直接插入排序進行組內排序
    4. 縮小 \(d\) 的值
    5. 重復進行分組和組內排序
    6. 知道 \(d=1\) 結束排序
  2. 演算法代碼:略
  3. 圖10-5-Shell插入排序示意圖:

三、選擇排序

  1. 選擇排序基本思想:每次從待排序檔案中選擇出排序碼最小的記錄,把該記錄放入已排序檔案的最后一個位置

3.1 直接選擇排序

  1. 演算法步驟:
    1. 首先從 \(n\) 個記錄中選擇排序碼最小的記錄,讓該記錄和第 \(1\) 個記錄交換
    2. 再從剩下的 \(n-1\) 個記錄選出排序碼最小的記錄,讓該記錄和第 \(2\) 個記錄交換
    3. 重復這樣的操作直到剩下最后兩個記錄
    4. 從最后兩個記錄中選出最小的記錄和第 \(n-1\) 個記錄交換
    5. 結束
  2. 圖10-6-直接選擇排序演算法執行程序:

3.1.1 直接選擇排序演算法(演算法)

void simpleselectsort(table *tab) {
    int i, j, k;
    for (i = 1; i <= tab->length - 1; i++) {
        k = i; // 記下當前最小元素的位置

        // 向右查找更小的元素
        for (j = i + 1; j <= tab->length; j++)
            if (tab->r[j].key < tab->r[k].key) k = j; // 修改當前最小元素的位置
            
        // 如果第i次選到的最小元素位置k不等于i,則將第k、i個元素交換
        if (k != i) {
            tab->r[0].key = tab->r[k].key;  // 以第0個元素作為中間單元進行交換
            tab->r[k].key = tab->r[i].key;
            tab->r[i].key = tab->r[0].key;
        }
    }
} 

時間復雜度:\(O(n^2)\)

3.2 樹型選擇排序(大綱未規定)

3.3 堆排序

  1. 堆排序解決的問題:保存中間比較結果,減少后面的比較次數,又不占用大量的附加存盤空間

  2. 堆:一個序列 \(\{k_1,k_2,\cdots,k_n\}\),其中 \(k_i\leq{k_{2i}}\)\(k_i\leq{k_{2i+1}}\),當 \(i=1,2,\cdots,n/2\)\(2i+1\leq{n}\)

    1. 注:當采用順序存盤這個序列,就可以把這個序列的每一個元素 \(k_i\) 看成是一顆有 \(n\) 個結點的完全二叉樹的第 \(i\) 個結點,其中 \(k_1\) 是該二叉樹的根結點
  3. 堆的特征:把堆對應的一維陣列看作一顆完全二叉樹的順序存盤,則該完全二叉樹中任意分支結點的值都小于或等于它的左右兒子結點的值,且根結點的值是所有元素中值最小的

  4. 最小堆和最大堆:當父節點的值總是大于等于任何一個子節點的值時為最大堆; 當父節點的值總是小于等于任何一個子節點的值時為最小堆

  5. 堆排序使用條件:當對記錄 \(n\) 較大的檔案,堆排序很好,當 \(n\) 較小時,并不提倡使用,因為初始建堆和調整建新堆時需要進行反復的篩選

  6. 圖10-8-一個序列 Arr = {5, 1, 13, 3, 16, 7, 10, 14, 6, 9}和相應的完全二叉樹:

  7. 構造最大堆步驟(通過已有完全二叉樹構建堆):

    1. 主要思想:判斷有子女結點的子樹是否滿足最大(小)堆的要求
    2. 首先我們需要找到最后一個結點的父結點如圖 \((a)\),我們找到的結點是 \(16\),然后找出該結點的最大子節點與自己比較,若該子節點比自身大,則將兩個結點交換,圖 \((a)\) 中,\(16\) 是最大的結點,不需要交換
    3. 我們移動到第下一個父結點 \(3\),如圖 \((b)\) 所示,同理做第一步的操作,交換了 \(3\)\(14\),結果如圖 \((c)\) 所示
    4. 移動結點到下一個父結點 \(13\),如圖 \((d)\) 所示,發現不需要做任何操作
    5. 移動到下個父結點 \(1\),如圖 \((e)\) 所示,然后交換 \(1\)\(16\),如圖 \((f)\) 所示,此時我們發現交換后,\(1\) 的子節點并不是最大的,我們接著在交換,如圖 \((g)\)所示
    6. 移動到父結點到 \(5\),一次重復上述步驟,交換 \(5\)\(16\),在交換 \(14\)\(5\),在交換 \(5\)\(6\) 所有節點交換完畢,最大堆構建完成
  8. 圖10-9-建堆程序示意圖:

  9. 堆排序步驟:

    1. 構建一個篩選演算法,該演算法可以把一個任意的排序碼序列建成一個堆,堆的第一個元素就是排序碼中最小的
    2. 把選出的最小排序碼從堆中洗掉,對剩余的部分重新建堆,繼續選出其中的最小者
    3. 直到剩余 \(1\) 個元素時,排序結束

四、交換排序

  1. 交換排序:對待排序記錄兩兩進行排序碼比較,若不滿足排序順序,則交換這對排序碼

4.1 冒泡排序

  1. 冒泡排序演算法步驟:
    1. 對所有記錄從左到右每相鄰兩個記錄的排序碼進行比較,如果這兩個記錄的排序碼不符合排序要求,則進行交換,這樣一趟做完,將排序碼最大者放在最后一個位置
    2. 對剩下的 \(n-1\) 個待排序記錄重復上述程序,又將一個排序碼放于最終位置,反復進行 \(n-1\) 次,可將 \(n-1\) 個排序碼對應的記錄放至最終位置,剩下的即為排序碼最小的記錄,它在第 \(1\) 的位置處
    3. 注:如果在某一趟中,沒有發生交換,則說明此時所有記錄已經按排序要求排列完畢,排序結束
  2. 圖10-10-冒泡排序演算法示意圖:

4.2 快速排序

  1. 快速排序演算法步驟(主要通過首尾指標的移動來劃分大于 \(x\) 和小于 \(x\) 的值):
    1. \(n\) 個待排序的記錄中任取一個記錄(不妨取第 \(1\) 個記錄)
    2. 設法將該記錄放置于排序后它最終應該放的位置,使它前面的記錄排序碼都不大于它的排序碼,而后面的記錄排序碼都大于它的排序碼
    3. 然后對前、后兩部分待排序記錄重復上述程序,可以將所有記錄放于排序成功后的相應位置,排序即告完成
  2. 圖10-11-一次劃分的程序:

五、歸并排序

  1. 歸并排序演算法基本思路:一個待排序記錄構成的檔案,可以看作是有多個有序子檔案組成的,對有序子檔案通過若干次使用歸并的方法,得到一個有序檔案

  2. 歸并:把兩個(或多個)有序子表合并成一個有序表的程序

  3. 一次歸并:把一個陣列中兩個相鄰的有序陣列歸并為一個有序陣列段,其結果存盤于另一個陣列

  4. 一趟歸并:\(n\) 個元素的陣列中,從第 \(1\) 個元素開始,每連續 \(len\) 個元素組成的陣列段是有序的,從第一個陣列段開始,每相鄰的兩個長度相等的有序陣列段進行一次歸并,一直到剩余元素個數小于 \(2*len\)時結束,如果剩余元素個數大于 \(len\),可以對一個長度為 \(len\),另一個長度小于 \(len\) 的兩個有序陣列實行一次歸并;如果其個數小于 \(len\),則把這些元素直接拷貝到目標陣列中

  5. 圖10-13-一趟歸并的圖示:

  6. 二路歸并排序演算法步驟:

    1. 對任意一個待排序的檔案,初始時它的有序段的長度為 \(1\)
    2. 通過不斷呼叫一趟歸并演算法,使有序段的長度不斷增加
    3. 直到有序段的長度不小于待排序檔案的長度,排序結束
  7. 圖10-14-二路歸并排序程序示意圖:

六、基數排序

  1. 基數排序(又稱分配排序):不對排序碼比較,而是借助于多排序碼排序的思想進行單排序嗎排序的方法

6.1 多排序碼的排序

  1. 注: 每一張牌有兩個 “排序碼”:花色(梅花<方塊<紅心<黑桃)和面值(\(2<3<\ldots<A\)),且花色的地位高于面值,即面值相等的兩張牌,以花色大的為大,即在比較兩張牌的牌面大小時,先比較花色,若花色相同,則再比較面值
  2. 分配:把 \(52\) 張撲克牌按面值分成 \(13\) 堆,再按照不同的花色分成 \(4\) 堆,分成若干堆的程序稱為分配
  3. 收集:第一次分配時,把面值不同的 \(13\) 堆牌自小至大疊在一起,把不同花色的 \(4\) 堆牌自小至大的次序合在一起,從若干堆自小到大疊在一起的程序稱為收集

6.2 靜態鏈式基數排序

  1. 靜態鏈式基數排序步驟:
    1. 先用靜態鏈表存盤待排序檔案中的 \(n\) 個記錄,表中每一個結點對應一個記錄
    2. 第一趟對低位排序碼(個位數)進行分配,將 \(n\) 個結點分配到序號分別為 \(0-9\)\(10\) 個鏈式佇列中,用 \(f[i]\)\(e[i]\) 分別作為第 \(i\) 個佇列的隊首和隊尾指標
    3. 第一趟收集程序中把這個 \(10\) 個佇列中非空的佇列依次合并在一起產生一個新的靜態單鏈表
    4. 對這個新的靜態單鏈表按十位數進行分配和采集,然后再依次對百位數、千位數直到最高位數反復進行這樣的分配和收集操作,排序結束
  2. 圖10-15-靜態鏈式技術排序示意圖:

七、各種內部排序演算法的比較(書中未給出)

排序方法 比較次數(最好) 比較次數(最差) 移動次數(最好) 移動次數(最差) 穩定性
直接插入排序 \(n\) \(n^2\) \(0\) $$n^2$$ \(√\)
折半插入排序 \(nlog_2n\) \(nlog_2n\) \(0\) \(n^2\) \(√\)
冒泡排序 \(n\) \(n^2\) \(0\) \(n^2\) \(√\)
快速排序 \(nlog_2n\) \(n^2\) \(nlog_2n\) \(n^2\) \(×\)
簡單選擇排序 \(n^2\) \(n^2\) \(0\) \(n\) \(×\)
堆排序 \(nlog_2n\) \(nlog_2n\) $$nlog_2n$$ \(nlog_2n\) \(×\)
歸并排序 \(nlog_2n\) \(nlog_2n\) \(nlog_2n\) \(nlog_2n\) \(√\)
基數排序 \(O(b(n+rd))\) \(O(b(n+rd))\) \(√\)

上表基數排序中:\(rd\) 是收集程序和各位排序碼的取值范圍中值的個數(十進制為 \(10\));靜態鏈式基數排序要進行 \(b\) 唐收集和分配

八、內部排序演算法的應用(書中未給出)

九、演算法設計題

十、錯題集

  1. 下列說法錯誤的是:基數排序適合實型資料的排序
  2. 插入排序演算法在最后一趟開始之前,所有的元素可能都不在其最終的位置上(比如最后一個需要插入的元素是最小的元素)
  3. 一個序列中有 \(10000\) 個元素,若只想得到其中前 \(10\) 個最小元素,最好采用堆排序演算法
  4. 排序的趟數和待排序元素的原始狀態有關的排序演算法是冒泡排序
  5. 快速排序演算法和冒泡排序演算法都會出現起泡的現象

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/155599.html

標籤:其他

上一篇:請問dragonboard 410c的android原始碼有沒有好的下載方法

下一篇:冷月手撕408之作業系統(12)-記憶體的分配與回收連續存盤管理

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more