基础算法:插入排序
今天开始学习算法,按自己能理解的方式写了插入排序算法以便后记.
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]未移动前时的位置, 以此类推.