#算法排序(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}用插入排序法排序,下图是排序过程
核心代码:
基本思想:通过构建有序序列,对于未排序的数据,每次从无序序列中取出第一个元素,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后移动,为最新元素提供插入空间。
排序办法:(此处暂时仅提供一种方法)
简单方法:首先在当前有序区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; //当一趟比较完成时,将待比较数值置入比它小的数值的后一位 } }
相关文章推荐
- 插入排序之直接插入排序(java实现)
- java排序算法之直接插入排序
- java直接插入排序
- java插入排序之直接插入排序
- 算法:排序----直接插入排序(Java)
- 直接插入排序(JAVA实现)
- 用JAVA实现排序算法之二:直接插入排序
- 直接插入排序(JAVA版)
- Java算法排序之--直接插入排序
- java直接插入排序(备忘)
- java直接插入排序
- 2、直接插入排序,JAVA代码
- 程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)
- 直接插入排序及其JAVA实现
- 插入排序--直接插入排序[Java实现]
- java 直接插入排序
- 直接插入排序 Java/C
- Java实现直接插入排序
- java实现各种基础排序(冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、归并排序)
- Java实现直接插入排序