是陣列等線性排列的數字從大到小或從小到大排序。
以從小到大排序為例。
資料 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23
使用 陣列 int array 儲存數字。
過程(陣列從小到大排序)
思路迴圈都把最大的數放在最後一位,無序數字個數減1。
i 為當前任務位置,n 剩下的無序數字個數
從第 0位開始,比較前後兩位數字大大小,當array[i] > array[i+1]時,數值互換。
乙個迴圈後,數值最大的已經存到陣列最後一位。
無序數字個數 n-1
for (int j = array.length - 1; j > 0; j--) //每排一次,剩下的無序數減一}}排序結果
**如下
插入排序演算法是把乙個數插入乙個已經排序好的陣列中。
例如 把 22 插入到 [1,5,10,17,28,39,42] 中,
結果 [1,5,10,17,22,28,39,42] 。
對陣列使用插入排序法
陣列 int array = [11, 39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23];
陣列元素是無序,設定乙個從大到小或從小到大的方向,第一位就是有序的[ 11 ],
第一次插入: [11, 39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23]。
取第二個數跟第乙個進行比較, 兩位有序 [11,39]
第二次插入:[11,39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23]
取第三個數,[11, 39,35],進行插入
[11, 35, 39,30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23]
以後每次取乙個數,插入陣列。
實現方法有很多種,筆者的方法跟氣泡排序法相似。
public試試把下面的**複製到控制台,可以看到每次排序的結果。static
void resort(ref
int array)}}
}
usingsystem;
namespace
, "); }
for (int j = i; j > 0; j--)
}console.writeline(
"\n排序後: ");
for (int sun = 0; sun <= i && sun < array.length; sun++)
, ");}}
}static
void main(string
args)
;console.write(
"原陣列:[");
foreach (var i in
array)
, ");
}console.write(
"]\n");
resort(
refarray);
console.write(
"\n- - - - -\n最後結果:[");
氣泡排序法與插入排序法比較
氣泡排序是從一端開始,比較大小後存到另一端。每次都是從前開始,把最大或最小的結果放到最後。
插入排序始終是從前面開始,把下乙個元素存到前面,不用比較最大最小的結果。
每次從後面找到最小或最大的數,進行位移排序。
陣列 int array = [11, 39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23];
第一位 i=0
最小值下標 minindex = 0,最小值 min=11
從後面查詢比 11 小的數,找到第 下標位 8,值為1,
進行交換,交換後 [1, 39, 35, 30, 7, 36, 22, 13, 11, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23];
第二位 i=1,
最小值下標 minindex = 1,最小值 min=39,
從後面查詢比 39 小且最小的數,找到 下標為 13,值為 5,
進行交換,交換後 [1, 5, 35, 30, 7, 36, 22, 13, 11, 38, 26, 18, 12, 39, 45, 32, 6, 21, 42, 23];
publicstatic
void resort(ref
int array)
}if (array[i] != array[minindex]) //
如果到比第i為更小的數,則發生交換。找不到則不改變}}
氣泡排序法 選擇排序法 插入排序法
一貫作風,不說廢話,走起 test public void test1 輸出每一步的排序結果 system.out.print 第 i 次的排序結果為 for int num arr system.out.println 換行 選擇排序 param arr 需排序的陣列 public void se...
php排序法 氣泡排序,選擇排序,插入排序
冒泡法排序 就是從小到大排序 function maopao arr arr array 2 1 4 3 maopao arr print r arr 插入排序 從小到大的順序 function insert sort arr arr array 2 1 4 3 insert sort arr pr...
C語言 冒泡法排序,選擇法排序和插入排序
例項1 冒泡法排序 陣列中有n 個整數,用冒泡法將它們從小到大 或從大到小 排序。例項解析 排序是非常重要且很常用的一種操作,有氣泡排序 選擇排序 插入排序 希爾排序 快速排序 堆排序等多種方法。這裡我們先簡單介紹前三種排序演算法和 的實現,其餘演算法將在後續課程 資料結構 中學習到。冒泡法排序是c...