插入排序是一类借助“插入”进行排序的方法,其主要思想是:每次将一个待排序的记录按照关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序!
直接插入排序是插入排序中最简单的排序方法。
具体排序过程
(1).将待排序序列分为有序序列和无序序列,初始化时有序区为待排序记录序列中的第一个记录,无序区包含所有剩余待排序的记录。
(2).将无序序列的第一个元素插入有序序列中合适的位置,从而使无序区减少一个记录,有序区增加一个记录。
(3).重复执行(2)过程,知道无序区中没有记录为止。
package sort;
import java.util.Arrays;
/**
* 直接插入排序
* @author zhouhai
*
*/
public class StraightInsertionSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]=new int[]{3,4,1,9,34,8};//定义一个测试数组
sort(a);
System.out.println(Arrays.toString(a));
}
public static void sort(int a[]){
int len=a.length;
for(int i=1;i<a.length;i++){
for(int j=i;j>0&&a[j]<a[j-1];j--){//若反序则交换
//不引用第三方变量交换
a[j]=a[j-1]+a[j];
a[j-1]=a[j]-a[j-1];
a[j]=a[j]-a[j-1];
}
}
}
}
输出结果:[1, 3, 4, 8, 9, 34]