一、排序算法的分类
二、直接插入排序的原理
插入排序通俗来讲,就是在一组无序的数组中一个个地取出值,将其放在有序的数组中合适的位置,使有序的数组再次有序,直到无序的数组为空,循环结束。
三、直接插入排序的实现
public class InsertSort{
/**
* 插入排序
* 插入排序相当于向一个排好序的数组中加入新值,使得数组再次有序
* 当第一次遍历时,相当于将第二个值与第一个比较,较小的放在前面
* 第二次遍历时,则是将第三个值加入前两个值中合适的位置,使得三个值有序
* ...
* 当将最后一个值加入到前面已经排好序的数组中时,遍历结束
* @param a
*/
public static void insSort(int[] a){
for(int i=0; i<a.length; i++){
int tmp = a[i];
int j = 0;
//将第i个值插入当前i-1中的合适位置
for(j=i; j>0&&tmp<a[j-1]; j--){
//从后向前遍历,如果tmp值更小,说明它的位置需要更靠前
//所以依次向后移动一个位置
a[j] = a[j-1];
}
a[j] = tmp;
}
}
public static void main(String args[]){
int[] test = {5,10,6,3,2};
insSort(test);
for(int i=0; i<test.length; i++){
System.out.print(test[i] + " ");
}
}
}
测试结果:
2 3 5 6 10