View Code

 1 //升序
 2 public class MyInsertSort {
 3     // 直接插入排序
 4     public void StraightInsertionSort(double[] sorted) {
 5         int i, j;
 6         for (i = 2; i < sorted.length; i++) {
 7             if (sorted[i] < sorted[i - 1]) {
 8                 sorted[0] = sorted[i];// 设一监视哨
 9                 sorted[i] = sorted[i - 1];
10                 for (j = i - 2; sorted[j] > sorted[0]; j--) {// 所有大于监视哨值后移
11                     sorted[j + 1] = sorted[j];
12                 }
13                 sorted[j + 1] = sorted[0];
14             }
15         }
16     }
17
18     // 希尔排序
19     public void ShellSort(double[] sorted) {
20         int incr[] = { 7, 5, 3, 1 };
21         for (int i = 0; i < incr.length; i++) {
22             ShellInsertSort(sorted, incr[i]);
23         }
24     }
25
26     public void ShellInsertSort(double[] sorted, int incr) {
27         // TODO Auto-generated method stub
28         int i1, j1;
29         for (i1 = 1 + incr; i1 < sorted.length; i1++) {
30             if (sorted[i1] < sorted[i1 - incr]) {
31                 sorted[0] = sorted[i1];
32                 for (j1 = i1 - incr; (sorted[j1] > sorted[0]) && j1 > 0; j1--) {
33                     sorted[j1 + incr] = sorted[j1];
34                 }
35                 sorted[j1 + incr] = sorted[0];
36             }
37         }
38     }
39
40 }

转载于:https://www.cnblogs.com/perfy/archive/2013/05/09/3069186.html

基础算法1——插入排序和希尔排序相关推荐

  1. 数据结构与算法 | 直接插入排序、希尔排序

    前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...

  2. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

  3. (数据结构与算法)插入排序和希尔排序

    1. 插入排序 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序 ...

  4. 九大经典算法之插入排序、希尔排序

    01 插入排序(Insertion Sort) 原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置. void insertion_sort(int arr[] ...

  5. 常见排序算法详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序)

    1.1 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找 ...

  6. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  7. 【数据结构与算法】内部排序之一:插入排序和希尔排序的N中实现(不断优化,附完整源码)...

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/20043459   前言 本来想将所有的内部排序总结为一篇博文,但是随着研究的深入,还是放弃 ...

  8. 常用排序算法之插入排序 ( 直接插入排序、希尔排序 )

    插入排序的方法是:从初始有序的子集合开始,不断地把新的数据元素插入到已排列有序子集合的合适位置上,使子集合中数据元素的个数不断增多,当子集合等于集合时,插入排序算法结束.常用的插入排序有直接插入排序和 ...

  9. JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)

    JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...

  10. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

最新文章

  1. 第一次使用51cto博客
  2. [转]使用C#调用金诚信71x系列读卡器的DLL
  3. vue-router使用next()跳转到指定路径时会无限循环
  4. Yoshua Bengio等图神经网络的新基准Benchmarking Graph Neural Networks(代码已开源)
  5. 02 | 服务治理:Nacos 如何实现微服务服务治理
  6. Boost:清理cleanup测试程序
  7. Shell(7)——case
  8. Google Guice范例解说之使用入门
  9. du,df,fdisk,mkfs.ext3命令详解
  10. arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...
  11. 数据库设计需要注意什么
  12. UIWebView控件的简易浏览器小案例
  13. shell批量文件编码转换
  14. python驱动级模拟按键大师_AB叔_C#驱动级模拟按键操作
  15. 如何为自己的在线办公软件 ONLYOFFICE Docs 服务器的字体库添加字体
  16. java自定义生成js代码_基于JavaScript的代码自动生成工具
  17. linux打包解压包(tar.gz )
  18. matlab:使用全局变量
  19. java表情包_大佬 java表情包 - 大佬 java微信表情包 - 大佬 javaQQ表情包 - 发表情 fabiaoqing.com...
  20. Toshiba转换芯片-TC358778XBG:RGB转MIPI DSI芯片资料

热门文章

  1. android 入门 (分析: 非匿名内部类 监听功能的实现)
  2. const修饰指针的情况分析
  3. Enumeration与Iterator接口
  4. 在Oracle中删除用户时提示:ORACLE无法删除当前连接用户
  5. Linux安装mysql-5.7.17
  6. 手机号码校验、邮箱校验
  7. 蓝桥杯-标题:六角填数
  8. 常用的一些类,少走弯路。待续...
  9. 理解 position:relative 与 position:absolute
  10. 推荐几个顶级的IT技术公众号