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.