軟考29-上午題-【數據結構】-排序

一、排序的基本概念

1-1、穩定性

穩定性指的是相同的數據所在的位置經過排序后是否發生變化。若是排序后,次序不變,則是穩定的。

1-2、歸位

每一趟排序能確定一個元素的最終位置。

1-3、內部排序

排序記錄全部存放在內存中進行排序的過程。

1-4、外部排序

待排序記錄的數量很大,以至于內存不能容納全部記錄,在排序過程中尚需對外存進行訪問的排序過程。

1-5、排序小結(要背)

比較最好時間復雜度,會發現,當待排序的序列基本有序的話,適合采用:

  • 直接插入排序
  • 希爾排序
  • 冒泡排序?

二、直接插入排序

穩定的?

不歸位

三、希爾排序

直接插入排序的改進。

基本思想:現將整個待排記錄序列分割成若干子序列,然后分別進行直接插入排序;待整個序列中的記錄基本有序的時候,再對全體記錄進行一次直接插入排序。

示例:

不穩定

不歸位?

四、真題1

真題1:

真題2:

?真題3:

真題4:

五、簡單選擇排序

算法思想:從待排數組中找到最小值,再將最小值與已排好序的數組后一位進行交換。

歸位

不穩定?

六、堆排序(簡單了解)?

示例:

此時,根元素80是最大的元素,將根元素80和隊列最后一個元素10交換,并將80脫離當前序列(歸位),此時,新的二叉樹不滿足大頂堆的規則,則繼續調整。

每次調整完得到的根節點都是當前序列的最大元素!!!

歸位

不穩定

七、真題2

真題1:

?

真題2:

八、冒泡排序

基本思想:相鄰兩個元素,倆倆交換。

穩定

歸位?

九、快速排序

快速排序首先選擇了一個基準值,然后分別選擇兩個指針在數組中一個找大,一個找小,然后進行交換。

通過一趟排序將待排序的記錄以基準值為分界,分為獨立的兩個部分,稱為前半區和后半區;前半區均小于基準值,后半區均大于基準值。

然后再分別對這兩個部分在進行快速排序,從而使得整個序列有序。

分治:分而治之。

歸位

不穩定!!!?

糾錯:空間時間復雜度是:O(log2n);?

十、真題2

真題1:

真題2:

真題3:

真題4:

十一、歸并排序

示例:

?

設計方法:分治法

不歸并

穩定

11-1、真題

真題1:

真題2:

?真題3:

真題4:

真題5:

真題6:

十二、排序小結

12-1、簡單排序

1、直接插入排序(穩定)

2、冒泡排序(穩定)

3、簡單選擇排序(不穩定)

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

空間復雜度:O(1)

12-2、希爾排序(不穩定)

時間復雜度:O(n^1.3)

空間復雜度:O(1)

12-3、快速排序(不穩定)

分治思想

時間復雜度:O(nlog2n)——性能最好

空間時間復雜度:O(log2n)

但是,當待排序列基本有序的時候,是最壞的情況,時間復雜度退化為:O(n^2)

12-4、堆排序(不穩定)

時間復雜度:O(nlog2n)

空間時間復雜度:O(1)

12-5、歸并排序(穩定)

倆倆歸并,n/2向上取整

整個歸并排序,需要進行log2n趟(向上取整)

空間復雜度:O(n)

時間復雜度:O(nlogn)

12-6、小結-穩定的排序

  • 直接插入排序;
  • 冒泡排序
  • 歸并排序

12-7、真題

真題1:

真題2:

真題3:

直接插入排序:局部有序

冒泡:每一趟排序,都將最大的泡泡在最后的位置。

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

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

相關文章

vue使用.sync和update實現父組件與子組件數據綁定的案例

在 Vue 中,.sync 是一個用于實現雙向數據綁定的特殊修飾符。它允許父組件通過一種簡潔的方式向子組件傳遞一個 prop,并在子組件中修改這個 prop 的值,然后將修改后的值反饋回父組件,實現雙向數據綁定。 使用 .sync 修飾符的基本語…

微信小程序 --- wx.request網絡請求封裝

網絡請求封裝 網絡請求模塊難度較大,如果學習起來感覺吃力,可以直接學習 [請求封裝-使用 npm 包發送請求] 以后的模塊 01. 為什么要封裝 wx.request 小程序大多數 API 都是異步 API,如 wx.request(),wx.login() 等。這類 API 接口…

【精選】Java面向對象進階——內部類

🍬 博主介紹👨?🎓 博主介紹:大家好,我是 hacker-routing ,很高興認識大家~ ?主攻領域:【滲透領域】【應急響應】 【Java】 【VulnHub靶場復現】【面試分析】 🎉點贊?評論?收藏 …

【操作系統】磁盤文件管理系統

實驗六 磁盤文件管理的模擬實現 實驗目的 文件系統是操作系統中用來存儲和管理信息的機構,具有按名存取的功能,不僅能方便用戶對信息的使用,也有效提高了信息的安全性。本實驗模擬文件系統的目錄結構,并在此基礎上實現文件的各種…

FISCO BCOS(十七)利用腳本進行區塊鏈系統監控

要利用腳本進行區塊鏈系統監控,你可以使用各種編程語言編寫腳本,如Python、Shell等 利用腳本進行區塊鏈系統監控可以提高系統的穩定性、可靠性,并幫助及時發現和解決潛在問題,從而確保區塊鏈網絡的正常運行。本文可以利用腳本來解…

Java實戰:分布式Session解決方案

本文將詳細介紹Java分布式Session的解決方案。我們將探討分布式Session的基本概念,以及常見的分布式Session管理技術,如Cookie、Token、Redis等。此外,我們將通過具體的示例來展示如何在Java應用程序中實現分布式Session。本文適合希望了解和…

Swift基礎知識:21.Swift繼承

在 Swift 中,類可以通過繼承從其他類獲得屬性和方法。被繼承的類稱為父類(或超類),繼承的類稱為子類。子類可以繼承父類的特性,并且可以添加自己的新特性。繼承允許類層次結構中的代碼重用和多態性。 定義一個基類&am…

Vue3 使用動態組件 component

component 標簽&#xff1a;用于動態渲染標簽或組件。 語法格式&#xff1a; <component is"標簽或組件名">標簽內容</component> 動態渲染標簽&#xff1a; <template><h3>我是父組件</h3><component is"h1">動態…

SpringCloud(15)之SpringCloud Gateway

一、Spring Cloud Gateway介紹 Spring Cloud Gateway 是Spring Cloud團隊的一個全新項目&#xff0c;基于Spring 5.0、SpringBoot2.0、 Project Reactor 等技術開發的網關。旨在為微服務架構提供一種簡單有效統一的API路由管理方式。 Spring Cloud Gateway 作為SpringCloud生態…

(delphi11最新學習資料) Object Pascal 學習筆記---第5章第3節(自定義托管記錄)

5.3.5 運算符和自定義托管記錄 ? 在 Delphi 語言中&#xff0c;有一組特殊的運算符可用于記錄&#xff0c;以定義自定義托管記錄。在此之前&#xff0c;請允許我回顧一下記錄內存初始化的規則&#xff0c;以及普通記錄和托管記錄之間的區別。 ? Delphi 中的記錄可以包含任何…

大語言模型LangChain本地知識庫:向量數據庫與文件處理技術的深度整合

文章目錄 大語言模型LangChain本地知識庫&#xff1a;向量數據庫與文件處理技術的深度整合引言向量數據庫在LangChain知識庫中的應用文件處理技術在知識庫中的角色向量數據庫與文件處理技術的整合實踐挑戰與展望結論 大語言模型LangChain本地知識庫&#xff1a;向量數據庫與文件…

【Unity】MySql +Navicat 安裝教程

問題描述 在使用Unity開發的時候&#xff0c;有的時候我們是需要使用Mysql數據庫的&#xff0c;本教程使用的MySql 和Navicat均為免安裝版 ?mysql安裝 1.下載mysql解壓至任意目錄&#xff0c;此處以“C:\mysql-5.6.39-winx64”為例. mysql百度云連接&#xff1a; 鏈接&…

Java的遞歸【詳解】

1.認識遞歸基礎知識 什么是方法遞歸&#xff1f; 遞歸是一種算法&#xff0c;在程序設計語言中廣泛應用。 從形式上說&#xff1a;方法調用自身的形式稱為方法遞歸&#xff08; recursion&#xff09;。 遞歸的形式&#xff1a; 直接遞歸&#xff1a;方法自己調用自己。 間接遞…

【監控】Spring Boot+Prometheus+Grafana實現可視化監控

目錄 1.概述 2.spring actuator 3.Prometheus 3.1.介紹 3.2.使用 1.client端的配置 2.server端的配置 4.grafana 5.留個尾巴 1.概述 本文是博主JAVA監控技術系列的第四篇&#xff0c;前面已經聊過了JMX、Spring actuator等技術&#xff0c;本文我們就將依托于Spring …

利用docker一鍵部署LLaMa到自己的Linux服務器,有無GPU都行、可以指定GPU數量、支持界面對話和API調用,離線本地化部署包含模型權重合并

利用docker一鍵部署LLaMa到自己的Linux服務器,有無GPU都行、可以指定GPU數量、支持界面對話和API調用,離線本地化部署包含模型權重合并。兩種方式實現支持界面對話和API調用,一是通過搭建text-generation-webui。二是通過llamma.cpp轉換模型為轉換為 GGUF 格式,使用 quanti…

Leetcode日記 889. 根據前序和后序遍歷構造二叉樹

Leetcode日記 889. 根據前序和后序遍歷構造二叉樹 給定兩個整數數組&#xff0c;preorder 和 postorder &#xff0c;其中 preorder 是一個具有 無重復 值的二叉樹的前序遍歷&#xff0c;postorder 是同一棵樹的后序遍歷&#xff0c;重構并返回二叉樹。 如果存在多個答案&#…

【Flink集群RPC通訊機制(三)】AkkaRpcActor設計與實現:接收RPC消息以及處理邏輯

文章目錄 1. 創建Receiver2. 進行消息處理 RPC請求發送后接收方的處理邏輯 在RpcEndpoint中創建的RemoteRpcInvocation消息&#xff0c;最終會通過Akka系統傳遞到被調用方。例如TaskExecutor向ResourceManager發送SlotReport請求的時候&#xff0c;會在TaskExecutor中將Resourc…

petalinux_zynq7 驅動DAC以及ADC模塊之二:petalinux

petalinux_zynq7 C語言驅動DAC以及ADC模塊之一&#xff1a;建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296在上一篇&#xff0c;建立了ADC和DAC兩個IP。這里繼續。本文在 petalinux默認配置的基礎上&#xff0c;添加了python和qt。再編譯出sdk可以給x86主…

汽車智能座艙中 顯示屏市場戰略趨勢分析 中篇

今天主要講講主流車廠顯示屏的趨勢。 主流車廠的中控&液晶儀表屏的尺寸及趨勢匯總 奔馳 奔馳A級 10.2510.25 奔馳C級 12.310.25 奔馳GLA 10.2510.25 奔馳E級 12.312.3 奔馳S級 12.312.8 1、奔馳的儀表幾乎都為液晶儀表&#xff0c;幾乎所有車型都有HUD的選配&#xff…

大功率應用中的厚膜電阻散熱器的設計?

在許多大功率應用中&#xff0c;例如電機和電源&#xff0c;電源電阻器位于主電源線中。它們的目的是防止損壞或提供一定程度的控制。 在這些應用中&#xff0c;電阻器承受恒定的、相對較高的電流。當電流流過電阻器時&#xff0c;它會產生熱量。這種熱能必須消散到環境中&…