初識算法,甚是腦大!初識排序,甚是苦惱!不過真要鐵 了心,好好的看下去,想一想這些排序並無那麼困難!算法
經過網上的學習和本身的理解,想對插入排序算法作一些總結,以加深對算法的理解。數組
直接插入排序(Insertion Sort)的思想是:學習
每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到所有記錄插入完成爲止。spa
基本思想:假設有數組a[] 有n個元素,隨機抽取第一個 a[1] 做爲有序區的元素,則把 [2 --- n-1] 的元素,依次插入到 有序區,code
最後生成含n個記錄的有序區。blog
代碼解析:排序
/* 時間複雜度最慢:O(n*n);若是都是正序的話,時間複雜度:O(n); * 思想:n個元素,抽一個 做爲有序區,剩下的元素要插入n-1 次,沒一次插入 須要 從右向左依次比較。 */ public static void insetSort(int a[]){ int j ; int temp; for(int i=1;i<a.length;i++){ //抽出一個元素後,餘下須要 插入比較 n-1次, j = i; temp = a[i]; //建立一個 臨時變量,用於存放將要插入的 元素。 while(j > 0 && temp <a[j-1]){ // 當j = 0 時,一次 插入結束 a[j] = a[j-1]; j--; } a[j] = temp; //將 temp放到 排序好的左邊位置上, } }