基础算法:插入排序

今天开始学习算法,按自己能理解的方式写了插入排序算法以便后记.

 

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]未移动前时的位置, 以此类推.

posted @ 2011-11-17 18:20  ITMelody  阅读(276)  评论(0编辑  收藏  举报