排序:插入排序法(Java,Kotlin)

定義

插入排序法定義

無聊的解釋

(百度百科):假設我們輸入的是

5,1,4,2,3

我們從第二個數字開始,這個數字是1,我們的任務只要看看1有沒有正確的位置,我們的做法是和這個數字左邊的數字來比,因此我們比較1和5,1比5小,所以我們就交換1和5,原來的排列就變成了

1,5,4,2,3

接下來,我們看第3個數字有沒有在正確的位置。這個數字是4,它的左邊數字是5,4比5小,所以我們將4和5交換,排列變成了

1,4,5,2,3

我們必須繼續看4有沒有在正確的位置,4的左邊是1,1比4小,4就維持不動了,以此類推。。。

插入排序的日常應用 簡單示例

工具類SortUtils

Java示例程式碼

兩種:1.交換;2.賦值

public class InsertSort { public static void main(String[] args) { int[] arr = SortUtils。getRandomIntArray(10000, 1, 1000); insertSort2(arr); SortUtils。printArray(arr); } private static void insertSort(int[] arr) { int length = arr。length; for (int i = 1; i < length; i++) { //尋找元素arr[i]的合適插入位置 //1。如果j-1位置值比j位置值大,交換 for(int j=i;j>0;j——){ if(arr[j]0;j——){ if(arr[j-1]>temp){ arr[j] = arr[j - 1]; }else{ break; } } arr[j] = temp; } } }

Kotlin

fun main(args: Array) { val arr = SortUtils。getRandomIntArray(10000,1,1000) insertSortKt2(arr) SortUtils。printArray(arr) } //交換 fun insertSortKt(arr:IntArray){ val length =arr。size for ((key,value) in arr。withIndex()){ var j = key while (j>0&&(arr[j-1]-arr[j])>0){ SortUtils。swap(arr,j-1,j) j—— } } } //賦值 fun insertSortKt2(arr:IntArray){ val length =arr。size for ((key,value) in arr。withIndex()){ var j = key var temp =arr[j] while (j>0&&(arr[j-1]-temp)>0){ arr[j]=arr[j-1] j—— } arr[j]=temp } }