1. 程式人生 > >InsertionSort 直接插入排序(java)

InsertionSort 直接插入排序(java)

string static 數字 nbsp ava 思想 oid sta and

排序思想:
相當於一堆數字,一開始先取出2個數排序,2個數排好序之後,再從一堆數字裏面取一個數排序,直到結束
偽代碼:
INSERTION_SORT(A)
for j = 2 to A.length
  key = A[j]
  //Insert A[j] into sorted sequence A[1...j-1].
  i = j - 1
  while i>0 and A[i]>key
    A[i+1] = A[j]
    i = i - 1

  A[i + 1] = key

代碼:

import java.io.*;
public class InsertionSort{
public static void InsertionSort(int[] A){
  //從第二個元素開始循環
  for(int i=1;i<A.length;i++){
    //得到需要排序的數
    int key = A[i];
    //跟之前排好序的最大的元素開始比較,此時j為之前排好序的最大的元素的下標
    int j = i - 1;
    //循環比較,直到這個數>前一個數並且<後一個數
    while(j>=0&&A[j]>key){
    //比這個數大,則之前的數往後移
      A[j+1] = A[j];
      j = j - 1;
    }
    //把這個數放入數組中
    A[j + 1] = key;
  }
}


public static void main(String[] args) {
  int[] A = { 4, 6, 9, 10, 5, 3};
  InsertionSort(A);
  for(int a: A){
    System.out.print(a+" ");
  }
 }
}

InsertionSort 直接插入排序(java)