插入排序,是迴圈遍歷一個無序數組(例如有10個元素),把遍歷出來的數值(第i個元素)插入到已經排過順序的數組(這個有序數組有10-i個元素)中。 用一個 數組 舉個例子: 初始數組:1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 第一次迴圈(i=0): ...
插入排序,是迴圈遍歷一個無序數組(例如有10個元素),把遍歷出來的數值(第i個元素)插入到已經排過順序的數組(這個有序數組有10-i個元素)中。
用一個 數組 舉個例子:
初始數組:1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48
第一次迴圈(i=0):1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48
第二次迴圈(i=1): 1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48
第三次迴圈(i=2): 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48
第四次迴圈(i=3):1, 4, 34, 89, 56, 40, 59, 60, 39, 1, 40, 90, 48
... ...
第13次迴圈(i=12)(結束):1, 1, 4, 34, 39, 40, 40, 48, 56, 59, 60, 89, 90
int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 }; // 輸入一個數組 for (int i = 0; i < sort.Length; i++) { int temp = sort[i]; // 臨時存儲第i個數的值 int j = i; for (; j > 0 && temp < sort[j - 1]; j--) // 遍歷有j 個數的有序數組(j從0開始),當 temp 臨時值小於sort[j-1](初始是,有j個數,j-1 為最後一個數)時,把當前第(j-1)位上的數向後移一位(j) { sort[j] = sort[j - 1]; } sort[j] = temp; // 退出迴圈後,把temp 放到 第j 個位置上(j 是經過迴圈處理後得到的) } for (int i = 0; i < sort.Length; i++) // 輸出 { Console.Write(sort[i] + " "); }