數據結構(五)

數據結構(五)

  • 常見的排序算法
    • 內部排序
      • 交換
      • 插入
      • 選擇
      • 歸并
      • 基數
    • 外部排序
      • 基于歸并的

常見的排序算法

內部排序

交換

冒泡:每一次運行總會將最小的或者最大的放到前面,如果需要交換,一直在交換
快速排序*:經過一次快排的過程,將待排序元素分成兩部分:比基準小的,比基準大的,再分別對這兩部分進行快
速排序
在這里插入圖片描述

#include <stdio.h>
//快排操作,將數組分成兩部分
int Quick_Pass(int arr[], int low, int high)
{int key = arr[low]; //找基準//從上往下依次比較while(low < high){while(low < high && arr[high] > key){//往前走high--;}//把后面遇到的比key小的值放入到前面arr[low] = arr[high];while(low < high && arr[low] <= key){//往后走low++;}//將前面的比key大的值放入盜后面arr[high] = arr[low];}//比較完了,low == high//基準入隊arr[low] = key;return low;
}
//快速排序
void Quick_Sort(int arr[], int low, int high)
{if(low >= high) return ;//執行一次快排操作int mid = Quick_Pass(arr, low, high);//左便Quick_Sort(arr, low, mid-1);//右邊Quick_Sort(arr, mid+1, high);
}
int main(int argc, const char *argv[])
{int arr[13] = {55, 22, 34, 12, 99, 76, 38, 65, 29, 35, 11, 36, 74};printf("排序前:");for(int i=0; i<13; i++){printf("%d ", arr[i]);}printf("\n");//排序Quick_Sort(arr, 0, 12);printf("排序后:");for(int i=0; i<13; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}

插入

直接插入:重構鏈表
折半插入:原理同排序二叉樹的插入,只是對象是一個有序的順序表
希爾排序:增量,逐漸減少的,直到增量為1為止

在這里插入圖片描述

選擇

簡單選擇:每一次運行總會將最小的或者最大的放到前面,如果需要交換,只交換一次
堆(大根堆,小根堆):根結點的值>=左右孩子的值 根節點的值<=左右孩子的值
在Linux下,系統定時器使用小根堆來管理定時器事件。小根堆是一種數據結構,可以快速找到最小值。

歸并

在這里插入圖片描述

當然可以。下面是一個使用C語言編寫的簡單歸并排序算法示例。歸并排序是一種分治算法,它的核心思想是將一個
大問題分解成多個小問題,然后遞歸地解決這些小問題,最后將結果合并起來。
#include <stdio.h>
void merge(int arr[], int left, int mid, int right) {int n1 = mid - left + 1;int n2 = right - mid;int L[n1], R[n2];for (int i = 0; i < n1; i++)L[i] = arr[left + i];for (int j = 0; j < n2; j++)R[j] = arr[mid + 1 + j];int i = 0;int j = 0;int k = left;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}
void merge_sort(int arr[], int left, int right) {if (left >= right)return;int mid = left + (right - left) / 2;merge_sort(arr, left, mid);merge_sort(arr, mid + 1, right);merge(arr, left, mid, right);
}

基數

在這里插入圖片描述

外部排序

基于歸并的

在這里插入圖片描述

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

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

相關文章

【java程序設計期末復習】chapter5 子類的繼承

子類的繼承 繼承是一種由已有的類創建新類的機制。利用繼承&#xff0c;我們可以先創建一個共有屬性的一般類&#xff0c;根據該一般類再創建具有特殊屬性的新類&#xff0c;新類繼承一般類的狀態和行為&#xff0c;并根據需要增加它自己的新的狀態和行為。由繼承而得到的類稱…

Git分支的操作詳解(查看、新增、切換、合并、刪除)

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

2024最新前端面試八股文【基礎篇293題】

?、HTML、HTTP、web綜合問題 1 前端需要注意哪些SEO 2 <img> 的 title 和 alt 有什么區別 3 HTTP的?種請求?法?途 4 從瀏覽器地址欄輸?url到顯示??的步驟 5 如何進??站性能優化 6 HTTP狀態碼及其含義 7 語義化的理解 8 介紹?下你對瀏覽器內核的理解 9 …

【操作系統】發展與分類(手工操作、批處理、分時操作、實時操作)

2.操作系統發展與分類 思維導圖 手工操作階段&#xff08;此階段無操作系統&#xff09; 需要人工干預 缺點&#xff1a; 1.用戶獨占全機&#xff0c;資源利用率低&#xff1b; 2.CPU等待手工操作&#xff0c;CPU利用不充分。 批處理階段&#xff08;操作系統開始出現&#x…

鏈表-線性表的鏈式表示

鏈表-線性表的鏈式表示 #mermaid-svg-ozpXrKnNCyYdqHvN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ozpXrKnNCyYdqHvN .error-icon{fill:#552222;}#mermaid-svg-ozpXrKnNCyYdqHvN .error-text{fill:#552222;stro…

express 設定路徑別名

在使用ts情況下 pnpm i -D tsconfig-paths配置tsconfig.json {// 引入 tsconfig-paths/register// 注意 ts-node 的層級與 compilerOptions 相同"ts-node": {"require": ["tsconfig-paths/register"]},"compilerOptions": {// ...//…

width: auto 和 width: 100% 的區別

width: auto Vs. width: 100% 關于 width 屬性 CSS 中的 width 屬性用于設置元素的寬度。默認情況下&#xff0c;width 設置的是內容區&#xff08;content area&#xff09;的寬度。如果元素有樣式 box-sizing: border-box&#xff0c;則 width 設置的是邊框區&#xff08;bo…

正運動控制器:視覺糾偏和找孔

一、用戶主界面CCD參數設置 通過主界面CCD參數設置&#xff0c;學習如何操作計算相機中心與電批中心的偏移量&#xff0c;以及相機標定的功能。 1、相機中心與電批中心的偏移量計算 1.1、在用戶主界面點擊CCD參數按鈕&#xff0c;進入CCD設置界面。 主界面 CCD參數設置界面 1…

制作電子畫冊速成攻略,快來試試

?當今社會&#xff0c;數字媒體日益普及&#xff0c;電子畫冊作為一種嶄新的展示方式&#xff0c;受到了越來越多人的青睞。它不僅形式新穎&#xff0c;互動性強&#xff0c;而且制作起來也并不復雜。想知道如何快速掌握制作電子畫冊的技巧嗎&#xff1f;我來教你吧。 接下來&…

二叉樹的廣義表反序列化

前言 個人小記 一、代碼 #include<stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX_NODE 10 #define MAX_LEN 100 #define key(n)(n)?(n->key):(-1) typedef struct Node {int key;struct Node* lchild,*rchil…

Leetcode 3159. Find Occurrences of an Element in an Array

Leetcode 3159. Find Occurrences of an Element in an Array 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3159. Find Occurrences of an Element in an Array 1. 解題思路 這一題的話我們只需要首先統計一下array當中目標元素x出現在第幾次的位置&#xff0c;構造一個has…

推薦13款常用的Vscode插件,提高前端日常開發效率

1. Live Server Live Server 插件是一個用于前端開發的擴展&#xff0c;它的主要作用是提供一個本地開發服務器&#xff0c;以便實時預覽和調試網頁應用程序。其最大特點在于熱重載&#xff0c;即開發者可實時預覽代碼效果。 因為Live Server 允許開發者在瀏覽器中實時預覽您正…

軟件測試面試題(五)

一&#xff1a;如何選擇用戶測試的工作產品&#xff1f;、 答&#xff1a;在用戶有需求得到簽字確認以后&#xff0c;我們選擇用戶測試的工作產品。我們幾乎所有的項目都進行了測試&#xff0c;我們是在項目立項公告中得知需要對工作產品進行測試。 二&#xff1a;測試環境描述…

C++中集合的使用

在 C 中&#xff0c;集合通常指的是標準模板庫&#xff08;STL&#xff09;中的 std::set 或 std::unordered_set。這兩個都是用來存儲不重復元素的容器&#xff0c;但在實現和使用方式上有一些區別。 1. std::set&#xff1a; 基于紅黑樹實現&#xff0c;元素按照嚴格的順序…

Llama 3沒能逼出GPT-5!OpenAI怒“卷”To B戰場,新企業級 AI 功能重磅推出!

Meta 是本周當之無愧的AI巨星&#xff01;剛剛推出的 Llama 3 憑借著強大的性能和開源生態的優勢在 LLM 排行榜上迅速躍升。 按理說&#xff0c;Llama 3在開源的狀態下做到了 GPT-3.7 的水平&#xff0c;必然會顯得用戶&#xff08;尤其是企業用戶&#xff0c;他們更具備獨立部…

指令中常用的7種尋址方式z

指令中的尋址方式就是對指令中的地址字段進行解釋&#xff0c;以獲得操作數的方法或獲得程序轉移地址的方法。常用的尋址方式有&#xff1a; 立即尋址&#xff1a;操作數就包含在指令中。直接尋址&#xff1a;操作數存放在內存單元中&#xff0c;指令中直接給出操作數所在存儲…

C#調用HttpClient.SendAsync報錯:System.Net.Http.HttpRequestException: 發送請求時出錯。

C#調用HttpClient.SendAsync報錯&#xff1a;System.Net.Http.HttpRequestException: 發送請求時出錯。 var response await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken);問題出在SSL/TLS&#xff0c;Windows Server 2012不支持…

先進制造aps專題八 基于ai大模型的ai超級應用,ai生管

目前正在研發的面向消費者的ai超級應用有ai文員&#xff0c;ai教師&#xff0c;ai家教&#xff0c;ai護士&#xff0c;ai翻譯 而ai生管無疑是面向制造業的ai超級應用 從商業角度來說&#xff0c;ai生管&#xff0c;必然是aps公司必然要研發的ai超級應用

Grafana 路徑遍歷所有路徑 CVE-2021-43798漏洞預警

簡介? ?Grafana是一個跨平臺、開源的數據可視化網絡應用程序平臺。用戶配置連接的數據源之后&#xff0c;Grafana可以在網絡瀏覽器里顯示數據圖表和警告。 漏洞危害等級 高危 CVE 編號? CVE-2021-43798 FOFA查詢 ?app"Grafana" ?zoomeyes查詢 ?app:"gr…