排序算法圖解之Java插入排序
1.插入排序簡介
插入排序,一般也被稱為直接插入排序。對于少量元素的排序,它是一個有效的算法。插入排序是一種最簡單的排序方法,它的基本思想是將一個記錄插入到已經(jīng)排好序的有序表中,從而一個新的、記錄數(shù)增1的有序表。在其實現(xiàn)過程使用雙層循環(huán),外層循環(huán)對除了第一個元素之外的所有元素,內(nèi)層循環(huán)對當(dāng)前元素前面有序表進行待插入位置查找,并進行移動
2.插入排序思想及圖解
插入排序的基本思想如下:
把n個待排序的元素看成為一個有序表和一個無序表,開始時有序表中只包含一個元素,無序表中包含n-1個元素,排序過程中每次從無序表中取出第一個元素,把它的排序碼依次與有序表元素的排序碼進行比較,將它插入到有序表中的適當(dāng)位置,使之成為一個新的有序表。
以序列:{55, 85, 21, 12, 5} 為例, 圖解如下:
粉紅色部分為每輪認(rèn)定的有序部分,其余顏色為認(rèn)定的無序部分。綠色標(biāo)識為每輪遍歷的無序序列的位置,將該位置的元素逐一與有序部分進行比較,找到合適的位置進行順序表的插入操作。
3.插入排序代碼實現(xiàn)
import java.util.Arrays; /** * @author 興趣使然黃小黃 * @version 1.0 * 插入排序 */ public class InsertSort { public static void main(String[] args) { int[] array = {55, 85, 21, 12, 5}; System.out.println("排序前: " + Arrays.toString(array)); insertSort(array); System.out.println("排序后: " + Arrays.toString(array)); } //插入排序 public static void insertSort(int[] arr){ //邊界條件 if (arr.length < 1){ return; } for (int i = 1; i < arr.length; i++) { //定義待插入的位置和待插入的數(shù) int insertIndex = i-1; //arr[i]前面的位置,便于插入 int insertVal = arr[i]; //先將待插入的值保存 //給insertVal找到待插入的位置 //1.insertIndex > 0防止越界 //2.insertVal < arr[insertIndex] 說明還未找到待插入的位置 while (insertIndex >= 0 && insertVal < arr[insertIndex]){ arr[insertIndex+1] = arr[insertIndex]; insertIndex--; } if (insertIndex != i){ arr[insertIndex+1] = insertVal; //插入 } System.out.println("第" + i + "輪: " + Arrays.toString(arr)); } } }
到此這篇關(guān)于排序算法圖解之Java插入排序的文章就介紹到這了,更多相關(guān)Java插入排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試
這篇文章主要介紹了springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-05-05Spring Boot JPA中使用@Entity和@Table的實現(xiàn)
這篇文章主要介紹了Spring Boot JPA中使用@Entity和@Table的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能
這篇文章主要介紹了SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能,pringBoot分頁查詢的兩種寫法,一種是手動實現(xiàn),另一種是使用框架實現(xiàn),現(xiàn)在我將具體的實現(xiàn)流程分享一下,需要的朋友可以參考下2023-11-11java正則匹配HTML中a標(biāo)簽里的中文字符示例
這篇文章主要介紹了java正則匹配HTML中a標(biāo)簽里的中文字符,涉及java中文正則及HTML元素操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2017-01-01Java設(shè)計實現(xiàn)一個針對各種類型的緩存
這篇文章主要為大家詳細介紹了Java如何設(shè)計實現(xiàn)一個針對各種類型的緩存,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下2023-11-11Intellij IDEA創(chuàng)建spring-boot項目的圖文教程
本文通過圖文并茂的形式給大家介紹了Intellij IDEA創(chuàng)建spring-boot項目的教程,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友參考下吧2018-01-01