插入排序--直接插入排序
2018-04-01 16:06
239 查看
插入排序的基本思想:每步将一个待排序元素,按其排序码大小插入到前面已经排好序的一组元素中,直到元素全部插入为止。在这里,我们介绍三种具体的插入排序算法:直接插入排序,希尔排序与折半插入排序。
直接插入排序的思想:当插入第i(i>=1)个元素时,前面的V[0],…,V[i-1]等i-1个 元素已经有序。这时,将第i个元素与前i-1个元素V[i-1],…,V[0]依次比较,找到插入位置即将V[i]插入,同时原来位置上的元素向后顺移。在这里,插入位置的查找是顺序查找。直接插入排序是一种稳定的排序算法,其实现如下:
输出结果:
直接插入排序的思想:当插入第i(i>=1)个元素时,前面的V[0],…,V[i-1]等i-1个 元素已经有序。这时,将第i个元素与前i-1个元素V[i-1],…,V[0]依次比较,找到插入位置即将V[i]插入,同时原来位置上的元素向后顺移。在这里,插入位置的查找是顺序查找。直接插入排序是一种稳定的排序算法,其实现如下:
package keking.sort; import java.util.Arrays; /** * Title: 直接插入排序 * Description: 在有序序列中不断插入新的记录以达到扩大有序区到整个数组的目的 * 时间复杂度:最好情形O(n),平均情形O(n^2),最差情形O(n^2) * 空间复杂度:O(1) * 稳 定 性:稳定 * 内部排序(在排序过程中数据元素完全在内存) * @author keking * */ public class StraightInsertionSort { public static int[] insertSort(int[] target){ if(target != null && target.length > 1){ for(int i = 1; i < target.length; i++){ for(int j = i; j > 0; j--){ if(target[j] < target[j-1]){ int temp = target[j]; target[j] = target[j-1]; target[j-1] = temp; } } } } return target; } public static void main(String[] args) { int[] arr = {12,56,564,564,22,34,12< 4000 /span>,748,65,385,486,53,2,35,64,}; System.out.println(Arrays.toString(arr)); int[] arr1 = insertSort(arr); System.out.println(Arrays.toString(arr1)); } }
输出结果:
[12, 56, 564, 564, 22, 34, 12, 748, 65, 385, 486, 53, 2, 35, 64] [2, 12, 12, 22, 34, 35, 53, 56, 64, 65, 385, 486, 564, 564, 748]
相关文章推荐
- 排序算法: 冒泡排序, 快速排序,希尔排序,直接插入排序 ,直接选择排序,归并排序,堆排序
- 算法学习之排序算法:插入排序(直接插入排序、折半插入排序、2-路插入排序)
- Java基础篇之----排序(快速排序、冒泡排序、堆排序、简单选择排序、 希尔排序、直接插入排序)
- JAVA排序算法---直接插入排序
- 直接插入排序
- 直接插入排序、希尔排序—C—Python
- 直接插入排序
- 第十五周项目4—直接插入排序
- 插入排序-直接插入排序
- 排序之直接插入排序(初体验)
- 《大话数据结构》读书笔记——9.5直接插入排序
- Java排序算法(四)--直接插入排序(InsertSort)
- 直接插入排序
- 第十六周 项目1 验证算法 直接插入排序
- 排序一:直接插入排序
- 16周 - 项目一-验证算法-直接插入排序
- 直接插入排序、折半插入排序、冒泡排序、快速排序的算法实现
- 直接插入排序
- 数据结构-排序算法之插入排序(直接插入,二分插入,希尔,表插入)
- 《大话数据结构》第9章 排序 9.5 直接插入排序