/**
* 直接插入排序的java实现
* 直接插入排序的时间复杂度为O(n^2)
* 一开始认为a[0]为有序的,因为只有一个数字,接下来需要将a[1]插入a[0]中
* 以此类推,a[0],a[1]已经为有序的,需要将a[2]插入到上述序列中
* 将a[2]与a[1]比较,若a[2]小于a[1],则将a[1]后移到a[2]的位置,然后继续比较
* @author shuaicenglou
*
*/
public class InsertSort {
public static void main(String[] args) {
int [] a = {49,38,65,97,76,13,27,49};
sort(a);
for(int i:a) System.out.println(i);
}
public static void sort(int[] a){
int temp = 0; //用于记录待排序的数字
for(int i=1;i<a.length;i++){ //从第二个元素开始比较
temp=a[i]; //记录当前待排序的数字
/**
* j记录待排序数字前面的有序数组的最后一个元素的下标,
* 从该下标开始从后往前搜素,若待排序数字小于搜索到的下标的数字,
* 则将该数字移动到j的后一位的下标处
*/
int j=i-1;
for(; j>=0&&temp<a[j]; j--){
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
}
直接插入排序的java实现
最新推荐文章于 2019-07-19 15:43:53 发布