java排序演算法—插入排序
阿新 • • 發佈:2018-12-27
插入排序
插入排序的思想方法:
將第一個元素看做是有序的元素(即待排序列的第一個元素看做是有序序列),然後我們將第二個元素和有序序列(即第一個元素)作比較,按正確的序列插入到序列中去。然後在將第三個元素和前面有序序列(即整個待排序列的前兩個元素)作比較,將第三個插入到前兩個元素中去,使得前三個元素有序。以此類推,直到所有的元素都有序。
程式碼實現
public class insertSort { private int arr[]; private int length; //構造方法 public insertSort(int i){ arr=new int[i]; length=0; } //插入 public void insert(int i){ arr[length]=i; length++; } //顯示 public void display(){ for (int i=0;i<length;i++){ System.out.print(arr[i]+" "); } System.out.println(); } //插入排序 public void sort(){ int i,j; for(i=0;i<length;i++){ //因為要全排序,則對序列進行遍歷,i表示當前要排序的元素下標值 int temp=arr[i]; //定義一個臨時變數儲存將要插入的元素 for(j=i-1;j>=0&&temp<arr[j];j--){ //從要排序的元素的前一個開始(j=i-1),從後往前遍歷(j--),若遍歷到的元素比要插入的臨時變數temp大(temp<a[j]) arr[j+1]=arr[j]; //則該元素往後移動一位。 } arr[j+1]=temp; //跳出迴圈,說明此時開始遍歷到比temp小的值a[j],在此值的後面加上temp即可(arr[j+1]=temp) } } }
測試類
public class insertSortApp { public static void main(String args[]){ insertSort arr=new insertSort(10); arr.insert(5); arr.insert(7); arr.insert(6); arr.insert(2); arr.insert(8); arr.insert(3); System.out.println("排序前陣列為:"); arr.display(); arr.sort(); System.out.println("排序後陣列為:"); arr.display(); } }
執行結果: