插入排序思想与实现
来源:互联网 发布:盘古越狱 for mac 编辑:程序博客网 时间:2024/06/03 11:27
插入排序的基本思想:每一趟将一个待排序元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上,直到所有待排序元素元素全部插入为止。在这里,这里介绍两种具体的插入排序算法:直接插入排序,希尔排序。
1、直接插入排序
直接插入排序的思想:当插入第i(i>=1)个元素时,前面的arr[0],…,arr[i-1]等i-1个 元素已经有序。这时,将第i个元素与前i-1个元素arr[i-1],…,arr[0]依次比较,找到插入位置即将arr[i]插入。插入位置的查找是顺序查找,从已经排好序列的最后一个数开始向前遍历,如果插入数小于当前数,就将当前数向后移动一位。。其实现如下:
public class InserSort { public static int[] insertSort(int[] arr){ if(arr!=null&&arr.length>1){ //待排序数组不为空且长度大于1 for(int i=1;i<arr.length;i++){ //插入的次数 int temp=arr[i];//待插入元素 int j=i-1;//已经排好序的序列个数 while(j>=0&&temp<arr[j]){//序列从后向前遍历,将大于待插入数的元素向后移一位 arr[j+1]=arr[j];//元素向后移动一位 j--; } arr[j+1]=temp; } }return arr; }}
2、希尔排序
希尔排序实质上是采用分组插入的方式,首先取一个整数gap<n作为间隔,将待排序序列分为间隔为gap的gap个子序列并对每一个子序列进行直接插入排序。然后,缩小间隔gap,重复上述操作,直至gap缩小为1,此时所有元素位于同一个序列且有序。由于刚开始时,gap较大,每个子序列元素较少,排序速度较快;待到排序后期,gap变小,每个子序列元素较多,但整个序列基本有序,所以排序速度仍较快。
图片来源于网络
public class ShellSort {public static int[] shellSort(int[] target){if(target != null && target.length != 1){int gap = target.length;while(gap > 1){ // 不断缩小gap直至为1gap = gap/2; //gap个子数组for (int i = 0 + gap; i < target.length; i++){ // 对每个子序列进行直接插入排序if(target[i] < target[i-gap]){int j = i - gap; //j为有序序列最后一位数int temp = target[i]; // 待插入值while(j >= 0 && target[j] > temp)// 从后向前遍历{target[j + gap] = target[j]; // 元素向后移动gap位j = j - gap;}target[j + gap] = temp; // 将待插入值插入合适的位置}}}}return target;}}
阅读全文
0 0
- 插入排序思想与实现
- 插入排序思想及其实现
- 插入排序的基本思想与实现代码
- 数据结构--插入排序(InsertSort)思想与实现
- 插入排序,二分插入排序,希尔排序思想与比较
- 插入排序,二分插入排序,希尔排序思想与比较
- 数据结构之冒泡排序与插入排序的思想与实现
- 直接插入排序与希尔排序的思想及算法实现
- 队列优先 之 插入排序实现(插入思想)
- 排序--直接插入排序思想及代码实现
- 插入排序分析与实现
- 直接插入排序算法的思想及java实现
- 直接插入排序的算法思想和实现过程
- 简单选择、冒泡、插入排序思想及Java实现代码
- C#实现冒泡排序与插入排序
- 归并排序与插入排序-C++实现
- 希尔排序的算法思想与实现
- 合并排序的思想与实现
- Cannot load /home/apache/modules/mod_wl_22.so into server: libstdc++.so.5
- 学习SSM框架笔记一:Spring容器
- Unity 脚本遇到错误的跳出 的bug解决与猜测
- JQuery 判断访问的浏览器是pc还是手机
- 2018年BAT薪资
- 插入排序思想与实现
- keystone介绍
- 禅道搭建踩过的坑
- 失分情况记录
- 软件测试[(美)Ron Patton]8/9/10
- ios11 UITableView顶部有空隙
- 用jQuery编写放大镜效果
- SpringCloud(第 026 篇)简单异构系统之 nodejs 微服务
- S3C2440存储器扩展研究——剖析nWE, nWBE, nBE间关系