插入排序演算法-java
阿新 • • 發佈:2021-07-12
插入排序的程式碼實現雖然沒有氣泡排序和選擇排序那麼簡單粗暴,但它的原理應該是最容易理解的了,因為只要打過撲克牌的人都應該能夠秒懂。插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。
插入排序演算法步驟:
將第一待排序序列第一個元素看做一個有序序列,把第二個元素到最後一個元素當成是未排序序列。
從頭到尾依次掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)
程式碼如下:
import org.junit.Test;import java.util.Arrays; public class InsertSort { public int[] insertSort(int[] array) { // 對 arr 進行拷貝,不改變引數內容 int[] arr = Arrays.copyOf(array, array.length); // 從下標為1的元素開始選擇合適的位置插入,因為下標為0的只有一個元素,預設是有序的 for (int i = 1; i < arr.length; i++) { // 記錄要插入的資料 inttmp = arr[i]; // 從已經排序的序列最右邊的開始比較,找到比其小的數 int j = i; while (j > 0 && tmp < arr[j - 1]) { arr[j] = arr[j - 1]; j--; } // 存在比其小的數,插入 if (j != i) { arr[j] = tmp; } }return arr; } @Test public void fun() { int[] a = {7, 10, 5, 3, 6, 8, 4, 9, 1, 2}; a=insertSort(a); for (int b : a) { System.out.print(b + " "); } } }