【Java】 大話資料結構(18) 排序演算法(5) (直接插入排序) 資料結構與演算法合集 資料結構與演算法合集
本文根據《大話資料結構》一書,實現了Java版的直接插入排序。
更多:資料結構與演算法合集
基本概念
直接插入排序思路:類似撲克牌的排序過程,從左到右依次遍歷,如果遇到一個數小於前一個數,則將該數插入到左邊所有比自己大的數之前,也就是說,將該數前面的所有更大的數字都後移一位,空出來的位置放入該數。
Java程式碼
public void insertSort(int[] arr) { if(arr==null || arr.length<=0) return; for(int i=1;i<arr.length;i++) { if(arr[i]<arr[i-1]) { int temp=arr[i]; int j=i; while(j>0 && temp<arr[j-1]) { arr[j]=arr[j-1]; j--; } arr[j]=temp; } } }
複雜度分析
空間複雜度:O(1)
時間複雜度:O(n^2)
更多:資料結構與演算法合集
相關推薦
【Java】 大話資料結構(18) 排序演算法(5) (直接插入排序) 資料結構與演算法合集 資料結構與演算法合集
本文根據《大話資料結構》一書,實現了Java版的直接插入排序。 更多:資料結構與演算法合集 基本概念 直接插入排序思路:類似撲克牌的排序過程,從左到右依次遍歷,如果遇到一個數小於前一個數,則將該數插入到左邊所有比自己大的數之前,也就是說,將該數前面的所有更大的數字都後移一位,空出來的位置放入該數。
【解決】Centos7 離線安裝gcc-4.8.5(利用rpm包)
最近需要在Centos7 安裝gcc-4.8.5,但很不幸,環境沒有網路,因此只能手動下載回所有依賴,並依次安裝。 一開始我是不知道gcc-4.8.5有什麼依賴的,就到網上去找gcc-4.8.0等其他版本的依賴(因為找不到有講gcc-4.8.5的版本),然後再自己揣摩,但這樣效率很低
【Java】 大話資料結構(17) 排序演算法(4) (歸併排序) 資料結構與演算法合集 資料結構與演算法合集
本文根據《大話資料結構》一書,實現了Java版的堆排序。 更多:資料結構與演算法合集 基本概念 歸併排序:將n個記錄的序列看出n個有序的子序列,每個子序列長度為1,然後不斷兩兩排序歸併,直到得到長度為n的有序序列為止。 歸併方法:每次在兩個子序列中找到較小的那一個賦值給合併序列(通過指標進行操
【Java】 大話數據結構(11) 查找算法(2)(二叉排序樹/二叉搜索樹)
PE bsp clas 代碼 根節點 替代 找到 extend true 本文根據《大話數據結構》一書,實現了Java版的二叉排序樹/二叉搜索樹。 二叉排序樹介紹 在上篇博客中,順序表的插入和刪除效率還可以,但查找效率很低;而有序線性表中,可以使用折半、插值、斐波
【Java】 大話資料結構(1) 線性表之順序儲存結構
本文根據《大話資料結構》一書,實現了Java版的順序儲存結構。 順序儲存結構指的是用一段地址連續的儲存單元一次儲存線性表的資料元素,一般用一維陣列來實現。 書中的線性表抽象資料型別定義如下(第45頁): 實現程式:
【Java】 大話數據結構(2) 線性表之單鏈表
out 返回 opened time 頭結點 tel color strong 基本數據類型 本文根據《大話數據結構》一書,實現了Java版的單鏈表。 書中的線性表抽象數據類型定義如下(第45頁): 實現程序: package LinkList; /** * 說
【算法拾遺(java描寫敘述)】--- 插入排序(直接插入排序、希爾排序)
ecan itblog insert med image java程序 can rip title 插入排序基本思想 每次將一個待排序的記錄按其keyword大小插入到前面已經拍好序的子文件的適當位置,直到全部記錄插入完畢為止。 直接插入
【Java】基本類型和引用類型(值傳遞)
適合 and span print pri right bre enc this 【關鍵詞】 【問題】 · 加深對基本類型和引用類型的理解; 【效果圖】 【分析】 參見最後的【參考資料】 【解決方式】 【代碼】 public
【java】對數據庫操作的那些事(包含數據庫中的預處理)
exception main exc 獲取 bat dba else .class 可維護 一、連接問題 前面剛介紹了怎麽連接數據庫,也寫了對應的模板。可是它的可維護性很差。那麽怎麽解決問題呢? 首先寫一個配置文件jdbc.properties <s
資料結構圖文解析之:直接插入排序及其優化(二分插入排序)解析及C++實現
0. 資料結構圖文解析系列 1. 插入排序簡介 插入排序是一種簡單直觀的排序演算法,它也是基於比較的排序演算法。它的工作原理是通過不斷擴張有序序列的範圍,對於未排序的資料,在已排序中從後向前掃描,找到相應的位置並插入。插入排序在實現上通常採用就地排序,因而空間複雜度為O(1)。在從後向前掃描的過程中,需要反
【Java】求1到100以內的素數(質數)
雖然我們都知道質數的概念:質數又稱素數,是指一個大於1的自然數中,除了1和其自身外,沒法被其他自然數整除的數。我當時蒙圈了,都是哪些數字嘛我還能一一說出來,至於多少個嘛,數一數就好了。可是
資料結構-插入排序(直接插入排序+折半插入排序)
二、插入排序 1.直接插入排序 這裡我們注意,元素的選擇是從第二個元素開始!動態過程如下: 遞增的程式碼實現: #include<iostream> using namesp
八大排序算法原理以及Java實現(直接插入排序)
不能 oat 設立 side 堆排 八大排序 算法 line load 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這裏說說八大排序就是內部排序。
2017秋-軟件工程第七次作業(1)-【探路者】貪吃蛇阿爾法發布展示(視頻展示)
軟件工程 lin 使用 .html -1 target 背景音樂 targe 核心 Part One 【探路者】選題展示視頻鏈接: http://www.iqiyi.com/w_19ruzx6xud.html Part Two 【貪吃蛇】阿爾法發布視頻截圖 1視頻的前半部
【探路者】第五周立會報告5(總第31次)
探路者 制作 reads 照片 1-1 修改 視頻拍攝 target dsn 【探路者】組成員及各位博客地址。 1藺依銘:http://www.cnblogs.com/linym762/ 2張恩聚:http://www.cnblogs.com/zej87/ 3米赫:htt
【轉】PHP中的後期靜態綁定(Late Static Bindings )
mbo 代碼 當前 test num ngs color public name php5.3版本新增的靜態綁定的靜態綁定語法,也成為PHP的後期靜態綁定,如下 class A{ public static function func1(){ e
【轉載】vscode佔滿cpu的解決方法(rg.exe佔用)
【轉載】VScode佔用cup100% – 作者:zhengrong__ 百度搜到的,真的太有用了。 最近遇到的問題,vscode一開電腦就開始卡,明明是新電腦。。。開啟工作管理員發現cpu佔用率幾乎100%,是3個rg.exe佔用的。百度了一下才找到方法。 在VScode中檔
【精華】PhalApi 2.x 新版本釋出流程(歡迎來開源)
當前,2.x新版本釋出的流程,主要如下。 重要的資訊 PhalApi 2.x Kernal核心包(底層程式碼在這裡):https://github.com/phalapi/kernal PhalApi 2.x 專案(直接可用於開發的專案):https://github.com/phalapi/p
【心得】Lattice和Xilinx工具關鍵特性對比(Diamond、ISE)
【根索引】 【索引】FPGA相關 背景 由於FPGA器件選型為Lattice的,所以由之前熟悉的ISE切換到Diamond,目前還在不斷適應中,有些過程體會,記錄下來供參考。按開發流程,講一些常用的特性進行對比,列舉如下: IP Core管理 Diamond初次見面的坑 內建邏輯分析儀(俗
【STM32】SPI的基本原理、庫函式(SPI一般步驟)
《STM32中文參考手冊V10》-第23章 序列外設介面SPI SPI的基本介紹 SPI的簡介 SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是序列外圍裝置介面,是Motorola首先在其MC68HCXX系列處理器上定義