基础算法1——插入排序和希尔排序
![](/assets/blank.gif)
![](/assets/blank.gif)
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——插入排序和希尔排序相关推荐
- 数据结构与算法 | 直接插入排序、希尔排序
前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...
- 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)
*排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...
- (数据结构与算法)插入排序和希尔排序
1. 插入排序 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序 ...
- 九大经典算法之插入排序、希尔排序
01 插入排序(Insertion Sort) 原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置. void insertion_sort(int arr[] ...
- 常见排序算法详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序)
1.1 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找 ...
- 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...
- 【数据结构与算法】内部排序之一:插入排序和希尔排序的N中实现(不断优化,附完整源码)...
转载请注明出处:http://blog.csdn.net/ns_code/article/details/20043459 前言 本来想将所有的内部排序总结为一篇博文,但是随着研究的深入,还是放弃 ...
- 常用排序算法之插入排序 ( 直接插入排序、希尔排序 )
插入排序的方法是:从初始有序的子集合开始,不断地把新的数据元素插入到已排列有序子集合的合适位置上,使子集合中数据元素的个数不断增多,当子集合等于集合时,插入排序算法结束.常用的插入排序有直接插入排序和 ...
- JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)
JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera Algorithms Part1&2 本文 ...
最新文章
- 第一次使用51cto博客
- [转]使用C#调用金诚信71x系列读卡器的DLL
- vue-router使用next()跳转到指定路径时会无限循环
- Yoshua Bengio等图神经网络的新基准Benchmarking Graph Neural Networks(代码已开源)
- 02 | 服务治理:Nacos 如何实现微服务服务治理
- Boost:清理cleanup测试程序
- Shell(7)——case
- Google Guice范例解说之使用入门
- du,df,fdisk,mkfs.ext3命令详解
- arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...
- 数据库设计需要注意什么
- UIWebView控件的简易浏览器小案例
- shell批量文件编码转换
- python驱动级模拟按键大师_AB叔_C#驱动级模拟按键操作
- 如何为自己的在线办公软件 ONLYOFFICE Docs 服务器的字体库添加字体
- java自定义生成js代码_基于JavaScript的代码自动生成工具
- linux打包解压包(tar.gz )
- matlab:使用全局变量
- java表情包_大佬 java表情包 - 大佬 java微信表情包 - 大佬 javaQQ表情包 - 发表情 fabiaoqing.com...
- Toshiba转换芯片-TC358778XBG:RGB转MIPI DSI芯片资料