您的位置:首页 > 编程语言 > Java开发

#算法排序(Java版)#直接插入排序

2014-07-31 18:42 253 查看
参考:#排序算法#【2】直接插入排序、希尔排序

基本思想:通过构建有序序列,对于未排序的数据,每次从无序序列中取出第一个元素,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后移动,为最新元素提供插入空间。

排序办法:(此处暂时仅提供一种方法)
简单方法:首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。
注意:若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。

假设有一数组 arr[]{69,65,90,37,92,6,28,54}用插入排序法排序,下图是排序过程



核心代码:

public static void insertSort(int[] arr){
int flag = 0;
int j = 0;
for(int i =1;i<arr.length;i++){		        //外层循环标识并决定待比较的数值
flag = arr[i];
for(j = i- 1;j>=0&&flag<arr[j];--j){	//内层循环为待比较数值确定其最终位置
arr[j+1] = arr[j];
}
arr[j+1] = flag;                        //当一趟比较完成时,将待比较数值置入比它小的数值的后一位
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: