排序-希尔排序-java
将数据区分为成待定间隔的几个小区块,以插入排序法排完区块内的数据后在渐渐减少间隔的距离。
交换法:
package paixu;import java.util.Arrays;// 希尔排序
public class shellSort {public static void main(String[] args) {int[] arr = {8,9,1,3,2,7,5,4,6,0};// shell(arr);shellAll(arr);}// 分步骤便于理解public static void shell(int[] arr){//因为排序分成5组int temp = 0;for (int i = 5; i < arr.length; i++) {//遍历各组中所有的元素,共5组,步长5for (int j = i - 5; j >=0; j-=5) { //j-=5 始终保持j为负数,跳出j的循环(j<0退出循环),这样在进行一次排序后就可以进入下一轮if (arr[j]>arr[j+5]){temp = arr[j];arr[j] = arr[j+5];arr[j+5] = temp;}}}}//完整希尔排序public static void shellAll(int[] arr){int temp = 0;for (int gap = arr.length; gap > 0; gap /= 2) {//因为排序分成gap组for (int i = gap; i < arr.length; i++) {//遍历各组中所有的元素,共gap组,步长gapfor (int j = i - gap; j >=0; j-=gap) { //j-=gap 始终保持j为负数,跳出j的循环(j<0退出循环),这样在进行一次排序后就可以进入下一轮if (arr[j]>arr[j+gap]){temp = arr[j];arr[j] = arr[j+gap];arr[j+gap] = temp;}}}}System.out.println("完整排序后:"+ Arrays.toString(arr));}
}
插入法:
public static void shell1(int[] arr){for (int gap = arr.length/2; gap > 0; gap /= 2) {//从第gap开始,逐个对其所在的组进行插入排序for (int i = gap; i < arr.length; i++) {int j = i;int temp = arr[j];if (arr[j]<arr[j-gap]){while (j-gap >= 0 && temp < arr[j-gap]){arr[j] = arr[j-gap];j-=gap;}arr[j] = temp;}}}System.out.println(Arrays.toString(arr));}
排序-希尔排序-java相关推荐
- 【数据结构-排序】1. 图解插入排序三种实现(插入排序/折半排序/希尔排序)
直接插入排序(插入排序) 排序思想 对于一个数组 A[0,n] 的排序问题,假设认为数组在 A[0,n-1] 排序的问题已经解决了. 考虑 A[n] 的值,从右向左扫描有序数组 A[0,n-1] ,直 ...
- 算法---排序--希尔排序和快速排序
冒泡.选择.插入排序算法是三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递 ...
- 排序---希尔排序实现和性能分析
希尔排序 希尔排序是简单插入排序的改进,直接插入排序的最坏情况时间复杂度达到O(n^2),比如从大到小的一串数字654321,使用插入排序从小到大进行排序,这就达到插入排序的最坏情况. 希尔排序是把记 ...
- 数据结构之内部排序--希尔排序
概要 -IDE:Pycharm -Python版本:python3.x -算法分类:内部排序->插入类排序->希尔排序 算法思想 希尔排序又称缩小增量排序法,是一种基于插入思想的排序方法. ...
- 【每天学一点 - 算法篇 - 排序 - 希尔排序】
系列文章目录 [每天学一点 - 算法篇 - 排序 - 插入排序] 文章目录 系列文章目录 前言 一.什么是希尔排序 二.原理 1.思路 2.示例 3.抽象 三.代码 四.复杂度 总结 前言 小时候听蛋 ...
- 数据结构 排序 java_Java数据结构之排序---希尔排序
希尔排序的基本介绍: 希尔排序同之前的插入排序一样,它也是一种插入排序,只不过它是简单插入排序之后的一个优化的排序算法,希尔排序也被称为缩小增量排序. 希尔排序的基本思想: 希尔排序是把数组中给定的元 ...
- ds排序--希尔排序_图解直接插入排序和希尔排序
前言 这次我们介绍插入类排序中的 直接插入排序 和 希尔排序 . 对于直接插入排序,虽然它的时间复杂度也是 O(n^2) ,但是在元素 有序或近乎有序 的情况下,时间复杂度可以降为 O(n) ,效率比 ...
- 理论基础 —— 排序 —— 希尔排序
[概述] 希尔排序是一种不稳定的排序方法,其是对直接插入排序的改进. 直接排序再基本本身基本有序时,只需要少量的插入操作,即可完成整个记录的排序工作,所谓基本有序,就是小的关键字基本在前,大的关键字基 ...
- ds排序--希尔排序_排序算法 - 希尔排序分析及优化
希尔排序 1 算法思想 希尔排序,也被称为递减增量排序,是简单插入排序的一种改进版本. 在插入排序中,如果待排序列中的某个元素,距离有序数列中待插入位置非常远,就需要比较很多次才可以到达插入位置,这是 ...
最新文章
- Dropout, DropConnect ——一个对输出,一个对输入
- 华为的深度学习平台:ModelArts
- 最短路径迪杰斯特拉算法 c语言,Dijkstra第K最短路径算法
- Python基础之基本数据类型的总结
- Anaconda更新源失败
- ios did receive memory warning
- C++ 面向对象(三)—— 类之间的关系
- design php 如何使用ant_Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据...
- 在无法单步调试的情况下找Bug的技巧
- linux下内存调试工具——valgrind
- 15个代理IP网站,打造免费代理IP池
- 量化交易让股市成为你的印钞机
- 无线手柄在ROS上的使用
- one 主格 复数 宾格_数字 主格宾格复数所有格
- 2004年下半年 网络工程师 上下午试卷【附带答案】
- 【SpringBoot进阶】阿里云短信发送配置
- 选择一款对的固定资产管理系统让固定资产管理轻松无比
- pyecharts js 地图无法显示 Map china not exists the geoJson of the map must be provided
- Linux查看系统基本信息
- 简单介绍API分类接口
热门文章
- 厉害|百度28位离职技术大牛和他们创建的AI公司!
- s4 android4.4.2,三星Galaxy S4(GT-I9500)开始Android 4.4.2升级
- Linux下C语言 对pow、exp未定义引用问题
- mysql数据字段属性
- Google退出中国损失的不止是搜索机会
- 数据结构——有序链表的合并,链表实现一元多项式相加
- GitLab CI Pipeline
- 正则表达式替换字符串中的${}里面的数据
- 极速进阶,小i智慧学堂联合复旦大学教授推出人工智能冬令营
- 软件开发项目 质量管理的6大关键事项