基礎演算法——插入排序的思路
阿新 • • 發佈:2018-12-18
package Algorithm; import java.util.Arrays; /** * * @author Liuyf 插入排序 基礎思路:類似玩撲克牌,左手持拍,右手抓拍,每次將右手新抓的牌插入到左手牌中相應的位置去 */ public class InsertSort { public static void main(String[] args) { int[] oldNum = { 3, 1, 5, 7, 2, 4, 9, 6 };// 基礎資料,未排序之前的資料 InsertSort sort = new InsertSort(); int[] newNum = sort.insertSort(oldNum); System.out.println(Arrays.toString(newNum)); } /** * 定義插入排序主方法 * * @param nums 待排序的陣列 * * @return 完成插入排序的陣列 */ int[] insertSort(int[] nums) { int i, j, insertNum;// i迴圈中使用 insertNum要插入的資料 for (i = 1; i < nums.length; i++) { //當前陣列長度為8,迴圈7次就可以了 直接拿第二個和第一個比較 insertNum = nums[i];//第一次要插入排序的值從第二個取出來,與元陣列第一個值比較 i的值為1 取出陣列下標為num[1]也就是第二個值 j = i - 1;//確定將要判斷的數字的位置 while (j >=0 && nums[j] > insertNum) {//第一次判斷迴圈開始條件為:陣列的第一個值大於我們取出的來的第二個值的時候 這裡做比較的是3,1 nums[j+1]=nums[j];//將這兩個值的位置交換 :將1移動到3前邊來 j=j-1;//重新確定下一次判斷的位置 } nums[j+1]=insertNum; //System.out.println(Arrays.toString(nums)); //取消註釋檢視每次排序情況 } return nums; } }