讀書筆記-《數據結構與算法》-摘要4[插入排序]

插入排序

核心:通過構建有序序列,對于未排序序列,在已排序序列中從后向前掃描(對于單向鏈表則只能從前往后遍歷),找到相應位置并插入。實現上通常使用in-place排序(需用到O(1)的額外空間)

  1. 從第一個元素開始,該元素可認為已排序
  2. 取下一個元素,對已排序數組從后往前掃描
  3. 若從排序數組中取出的元素大于新元素,則移至下一位置
  4. 重復步驟3,直至找到已排序元素小于或等于新元素的位置
  5. 插入新元素至該位置
  6. 重復2~5

在這里插入圖片描述

public class InsertionSort {public static void main(String[] args) {int unsortedArray[] = new int[]{6, 5, 3, 1, 8, 7, 2, 4};insertionSort(unsortedArray);System.out.println("After sort: ");for (int item : unsortedArray) {System.out.print(item + " ");}}public static void insertionSort(int[] array) {int len = array.length;for (int i = 0; i < len; i++) {int index = i, array_i = array[i];while (index > 0 && array[index - 1] > array_i) {array[index] = array[index - 1];index -= 1;}array[index] = array_i;/* print sort process */for (int item : array) {System.out.print(item + " ");}System.out.println();}}
}

輸出:

6 5 3 1 8 7 2 4 
5 6 3 1 8 7 2 4 
3 5 6 1 8 7 2 4 
1 3 5 6 8 7 2 4 
1 3 5 6 8 7 2 4 
1 3 5 6 7 8 2 4 
1 2 3 5 6 7 8 4 
1 2 3 4 5 6 7 8 
After sort: 
1 2 3 4 5 6 7 8

希爾排序

核心:基于插入排序,使數組中任意間隔為h的元素都是有序的,即將全部元素分為h個區域使用插入排序。其實現可類似于插入排序但使用不同增量。更高效的原因是它權衡了子數組的規模和有序性。

推薦大佬文章:排序算法 —— 希爾排序(圖文超詳細)

從網上搞了一個動圖

在這里插入圖片描述

(圖網,侵刪)

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

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

相關文章

如何主持一場知識競賽搶答賽

知識競賽主持說難不難&#xff0c;說簡單也不簡單&#xff0c;我就從易到難介紹一下。 入門級&#xff0c;題主不用練習太多其他花哨的技巧&#xff0c;只要注意一點&#xff0c;熟悉比賽流程。知識競賽需要給所有選手一個公平流暢的答題環境&#xff0c;所以題主自身必須非常…

干貨!接口中的大事務,該如何進行優化?

作為后端開發的程序員&#xff0c;我們常常會的一些相對比較復雜的邏輯&#xff0c;比如我們需要給前端寫一個調用的接口&#xff0c;這個接口需要進行相對比較復雜的業務邏輯操作&#xff0c;比如會進行&#xff0c;查詢、遠程接口或本地接口調用、更新、插入、計算等一些邏輯…

掌握iText:輕松處理PDF文檔-進階篇

簡體中文寫入 iText本身對簡體中文的支持有限&#xff0c;但可以通過引入額外的字體包來增強其對簡體中文的支持。例如&#xff0c;可以使用iTextAsian.jar這個亞洲字體包&#xff0c;它包含了幾種簡單的亞洲字體&#xff0c;其中包括簡體中文字體。只需要將iTextAsian.jar放到…

springboot 啟動之后報錯:Unsatisfied dependency through field ‘bbbClient’

springboot 啟動之后報錯&#xff1a;UnsatisfiedDepencyException:Error creating bean with name ‘aaaServiceImpl’: Unsatisfied dependency through field ‘bbbClient’。 這兩天一直在進行著日常 debugger 查看代碼。可是發生了一個挺“靈異”的事件。那就是我看的項目…

46. 全排列

46. 全排列 原題鏈接&#xff1a;完成情況&#xff1a;解題思路&#xff1a;參考代碼&#xff1a;_46全排列_構建數組回溯_46全排列_直接構建 錯誤經驗吸取 原題鏈接&#xff1a; 46. 全排列 https://leetcode.cn/problems/permutations/description/ 完成情況&#xff1a;…

codeforces D.In Love

思路 用兩個 m u l t i s e t multiset multiset 分別存 l , r l,r l,r 。你也可以寫平衡樹在 l l l 的 m u l t i s e t multiset multiset 里去查詢是否存在比最小的 r r r 大的 l l l 。 Think Twice, Code Once #include<bits/stdc.h> #define il inline #d…

小模型學習(1)-人臉識別

【寫作背景】因為最近一直在研究大模型&#xff0c;在與客戶進行交流時&#xff0c;如果要將大模型的變革性能力講清楚&#xff0c;就一定要能將AI小模型的一些原理和效果講清楚&#xff0c;進而形成對比。當然這不是一件簡單的事情&#xff0c;一方面大模型分析問題的的本質原…

Mybatis分頁插件PageHelper

PageHelper是什么&#xff1f; 是MyBatis提供的分頁插件&#xff0c;可以支持MySQL、Oracle等六種數據庫。 集成方式如下&#xff1a; 1 引入依賴 <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> <dependency><groupId>co…

反射加載SDK完成統一調用

文章目錄 1、需求背景2、接口抽象類具體實現類3、疑問4、存在的問題5、通過反射加載SDK并完成調用5、補充&#xff1a;關于業務網關7、補充&#xff1a;關于SDK的開發 關鍵點&#xff1a; 接口抽象類&#xff08;半抽象半實現&#xff09;具體實現類業務網關反射加載SDK&#…

JAVA如何調用python

以下代碼想通過測試&#xff0c;必須有一個前提&#xff1a;電腦上安裝了Python環境。不太習慣說廢話&#xff0c;直接上代碼了。 以下是用于測試的python代碼&#xff08;mytest.py&#xff09;&#xff1a; # 因為用戶到了參數處理&#xff0c;所以需要引用 import argpars…

Java學習手冊——第五篇數據類型

數據類型&#xff1a;是數據化的基石&#xff0c;如果沒有數據類型怎么表示呢&#xff1f;比如年齡可以用整數&#xff1a;18歲。如果有更好的表示方式大家可以留言喲~ 在舉個例子就是姓名&#xff0c;我們需要用字符串的形式來表示。這就是數據類型的魅力&#xff0c;而又有同…

TS基礎語法

前言&#xff1a; 因為在寫前端的時候&#xff0c;發現很多UI組件的語法都已經開始使用TS語法&#xff0c;不學習TS根本看不到懂&#xff0c;所以簡單的學一下TS語法。為了看UI組件的簡單代碼&#xff0c;不至于一臉懵。 一、安裝node 對于windows來講&#xff0c;node版本高…

電腦出現這些現象,說明你的固態硬盤要壞了

與傳統機械硬盤&#xff08;HDD&#xff09;相比&#xff0c;固態硬盤&#xff08;SSD&#xff09;速度更快、更穩定、功耗更低。但固態硬盤并不是完美無瑕的&#xff0c;由于顆粒寫入機制&#xff0c;可能會在七到十年的預期壽命之前出現故障。所以用戶最好為最終故障做好準備…

網頁設計中增強現實的興起

目錄 了解增強現實 增強現實的歷史背景 AR 和網頁設計的交叉點 AR 在網頁設計中的優勢 增強參與度和互動性 個性化的用戶體驗 競爭優勢和品牌差異化 AR 在網頁設計中的用例 結論 近年來&#xff0c;增強現實已成為一股變革力量&#xff0c;重塑了我們與數字領域互動的方式。它被…

【FMCW毫米波雷達設計 】 — FMCW波形

原書&#xff1a;FMCW Radar Design 1 引言 本章研究驅動FMCW雷達的主要波形:線性調頻(LFM)波形。我們研究信號的行為及其性質。隨后&#xff0c;本章討論了匹配濾波理論&#xff0c;并研究了壓縮這種波形的技術&#xff0c;特別是所謂的拉伸處理&#xff0c;它賦予FMCW雷達極…

DOS 批處理 (二)

DOS 批處理 1. 基礎 DOS 命令1.1 基礎命令1.2 文件系統操作1.3 文件夾管理1.4 文件管理1.5 網絡相關1.6 系統管理1.7 IF、FOR和NETIFFORNET 1. 基礎 DOS 命令 command /? 查找幫助DOS命令不區分命令字母的大小寫 C:\Users\Administrator>echo 1 1 C:\Users\Administrator…

基于SSM框架的倉庫管理系統

基于SSM框架的倉庫管理系統 文章目錄 基于SSM框架的倉庫管理系統 一.引言二.系統設計三.技術架構四.功能實現五.界面展示六.源碼獲取 一.引言 現代商業環境中&#xff0c;倉庫管理對于企業的運營效率和客戶滿意度至關重要。傳統的手工管理方式已經無法滿足日益復雜的倉儲需求。…

【Spring】SpringBoot日志

SpringBoot日志 日志概述日志使用打印日志獲取日志對象使用日志對象打印日志日志框架介紹門面模式SLF4J框架介紹(simple logging facade for java) 日志格式說明日志級別日志級別的分類日志級別的使用 日志配置配置日志級別日志持久化配置日志文件的路徑和文件名配置日志文件的…

【刷題篇】動態規劃(六)

文章目錄 1、最大子數組和2、環形子數組的最大和3、乘積最大子數組4、乘積為正數的最長子數組長度5、 等差數列劃分6、最長湍流子數組 1、最大子數組和 給你一個整數數組 nums &#xff0c;請你找出一個具有最大和的連續子數組&#xff08;子數組最少包含一個元素&#xff09;&…

【Unity動畫】Avatar Mask

創建 Avatar Mask可以設置那一部分骨骼運動和不運動 然后放在狀態機里面的層中來混合 【后續完善】