Java實現插入排序程式


在本文中,我們將學習如何在Java中實現插入排序。插入排序是一種基於比較的原地排序演算法。這裡,維護一個始終排序的子列表。例如,陣列的較低部分被維護為排序狀態。要插入此排序子列表中的元素必須找到其適當的位置,然後插入到該位置。因此得名,插入排序。

順序搜尋陣列,並將未排序的項移動並插入到排序的子列表(在同一陣列中)。

問題陳述

對於給定的陣列,編寫一個Java程式來實現插入排序。

輸入

array[] = {10, 20, 25, 63, 96, 57}

輸出

10 20 25 57 63 96

插入排序演算法

實現 插入排序演算法的步驟 -

  • 如果它是第一個元素,則已排序。返回1;
  • 選擇下一個元素
  • 與排序子列表中的所有元素進行比較
  • 將排序子列表中所有大於要排序的值的元素右移
  • 插入for迴圈的值
  • 重複此過程,直到列表排序

虛擬碼 

以下是插入排序演算法的虛擬碼 -

Algorithm: Insertion-Sort(A)
for j = 2 to A.length
key = A[j]
i = j – 1
while i > 0 and A[i] > key
A[i + 1] = A[i]
i = i -1
A[i + 1] = key

Java實現插入排序程式

以下是Java程式實現插入排序 -

public class InsertionSort {
   public static void main(String args[]){
      int array[] = {10, 20, 25, 63, 96, 57};
      int size = array.length;

      for (int i=1 ;i< size; i++){
         int val = array[i];
         int pos = i;

         while(array[pos-1]>val && pos>0){
            array[pos] = array[pos-1];
            pos = pos-1;
         }
         array[pos] = val;
      }

      for (int i=0 ;i< size; i++){
         System.out.print(" "+array[i]);
      }
   }
}

輸出

10 20 25 57 63 96

時間複雜度: O(N^2)
輔助空間: O(1)

程式碼解釋

上面的Java程式實現了插入排序演算法。它首先初始化一個整數陣列,然後確定陣列的長度。主要的排序邏輯發生在一個for迴圈中,該迴圈從第二個元素開始迭代陣列。對於每個元素,當前值 val 與陣列排序部分的元素進行比較。如果排序部分中的任何元素大於val,則迴圈將這些元素向右移動,為插入騰出空間。

最後,val 被放置在其正確的位置,確保陣列的左側保持排序狀態。排序後,程式按順序列印排序後的陣列元素。

更新於: 2024年9月11日

1K+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.