Java排序演算法(三):直接插入排序

來源:互聯網
上載者:User

標籤:

[基本思想]

關鍵:在前面已經排好序的序列中找到合適的插入位置

步驟:

1. 從第一個元素開始,該元素可以認為已經排好序。

2. 取出下一個元素,在已經排好序的元素序列中從後往前掃描進行比較。

3. 如果該元素(已排序) 大於新元素,則將該元素移到下一位置。

4. 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置。

5. 將新元素插入到該位置後面。

6. 重複步驟2~5


[Java實現]

public class InsertSort {public static void main(String[] args) {int[] arr = { 6, 5, 3, 1, 8, 7, 2, 4 };System.out.println("排序之前:");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}// 直接插入排序insertSort(arr);System.out.println();System.out.println("排序之後:");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}/** * 直接插入排序 */private static void insertSort(int[] arr) {int j; // 已排序列表下標int t; // 待排序元素for (int i = 1; i < arr.length; i++) {if (arr[i] < arr[i - 1]) { t = arr[i]; // 賦值給待排序元素for (j = i - 1; j >= 0 && arr[j] > t; j--) {arr[j + 1] = arr[j]; // 從後往前遍曆已排序列表,逐個和待排序元素比較,如果已排序元素較大,則將它後移}arr[j + 1] = t; // 將待排序元素插入到正確的位置}}}}

點評:設定變數t很重要,它記住了待插入的元素的值,元素移動的時候被覆蓋了也沒關係。


[演算法特點]

時間複雜度:O(n^2)

直接插入排序法比冒泡和簡單選擇排序效能要好一些。

Java排序演算法(三):直接插入排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.