今天开始学习算法,按自己能理解的方式写了插入排序算法以便后记.
package SortInsert; public class SortInsert { public static void main(String args[]) { int sortData[] = { 4, 1, 2, 3, 8, 6, 5, 9, 11 }; sort(sortData); System.out.println(sortData); } static int i, j, tmp; public static void sort(int data[]) { for (i = 1; i < data.length; ++i) { tmp = data[i]; j = i - 1; while (true) { if (j < 0 || data[j] < tmp) break; data[j + 1] = data[j]; // 如果这个数比需要排序的数大时则向后移动一单元 j--; } data[j + 1] = tmp; } } }
1.假设前面的data[n-1]数据已经排好.到排序data[n]这个数时,先保存data[n] 到临时变量tmp用于后来插入到适当的位置.
2.当data[n-1]大于data[n]时,data[n-1]向后移动一个单元.以更当data[n-2] 小于tmp (要排序的这个值)时,插入data[n-1]未移动前时的位置.
3.若data[n-2]仍大于tmp, data[n-2]向后移动一个单元,以更当data[n-3] 小于tmp (要排序的这个值)时,插入data[n-2]未移动前时的位置, 以此类推.