Hark的数据结构与算法练习之希尔排序

算法说明

希尔排序是插入排序的优化版。

插入排序的最坏时间复杂度是O(n2),但如果要排序的数组是一个几乎有序的数列,那么会降低有效的减低时间复杂度。

希尔排序的目的就是通过一个increment(增量)来对数列分组进行交换排序,最终使数列几乎有序,最后再执行插入排序,统计出结果。

通过increment=n/2, 也就是如果9个数的话,增量为4,2,1。   如果是20个数的话,增量就是10,5,2,1。  当increment为1时,其实对几乎有序的数列进行插入排序啦啦。

 

 

 

时间复杂度

O(n2/3)

 

空间复杂度

O(1)

 

代码

使用的是Java

/** 希尔排序*/
public class ShellSort {public static void main(String[] args) {int[] arrayData = { 5, 9, 6, 7, 4, 1, 2, 3, 8 };ShellSortMethod(arrayData);for (int integer : arrayData) {System.out.print(integer);System.out.print(" ");}}public static void ShellSortMethod(int[] arrayData) {int i, j, temp = 0;int increment = arrayData.length;do {increment = increment / 2;  //增量for (i = increment; i < arrayData.length; i++) {if (arrayData[i] > arrayData[i - increment]) {   //判断是否要进行插入排序temp = arrayData[i];  //将要插入的值存放在临时变量中//这里其实做的就是插入排序,将以增量为步长,往后移动。   //temp > arrayData[j] 这个是要注意的,只会移动比要插入的值小的数字for (j = i - increment; j >= 0 && temp > arrayData[j]; j -= increment) {arrayData[j + increment] = arrayData[j];}arrayData[j + increment] = temp;}}} while (increment > 0);}
}

  

 

结果

9 8 7 6 5 4 3 2 1 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13 个超炫的 Conky 配置

Conky 是一款桌面美化及系统信息监控软件&#xff0c;有着很强的自定义性&#xff0c;如果你熟悉的话可以配置出各类不同效果的界面&#xff0c;而下面列出了 13 个超炫的 Conkey 配置&#xff0c;你可以尝试其中之一。 Bionic Conky&#xff1a; Hi-Tek Conky&#xff1a; Con…

android 播放声音 停止其他,Android AudioManager处理两个播放器同时有声音,停止其中一个播放的问题,暂停其他的播放...

尽管某个时刻只有一个activity可以运行&#xff0c;Android却是一个多任务环境&#xff0e;这对使用音频的应用带来了特殊的挑战&#xff0c;因为只有一个音频输出而可能多个媒体都想用它&#xff0e;在Android2.2之前&#xff0c;没有内建的机制来处理这个问题&#xff0c;所以…

数据仓库定义

数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的&#xff08;Subject Oriented&#xff09;、集成的&#xff08;Integrated&#xff09;、相对稳定的&#xff08;Non-Volatile&#xff09;、反映历史变化&#xff08;Time Variant&#xff09;的数据集合&…

C# 操作 Word 修改word的高级属性中的自定义属性

为 Microsoft Word 创建自动化客户端 启动 Visual Studio .NET。在文件菜单上&#xff0c;单击新建&#xff0c;然后单击项目。从 Visual C# 项目类型中选择 Windows 应用程序。默认情况下会创建 Form1。添加对 Microsoft Word 对象库的引用。为此&#xff0c;请按照下列步骤操…

大型门户网站的可伸缩性架构设计

大型门户网站的可伸缩性架构设计2009-12-28 来源&#xff1a;网络我们知道&#xff0c;对于一个大型门户网站来说&#xff0c;可伸缩性是非常重要的&#xff0c;怎么样在纵向和横向有良好的可伸缩性&#xff0c;就需要在做架构设计的时候考虑到一个分的原则&#xff0c;我想在多…

html中dd dt的效果,html中dt dd

html中&#xff0c;dl,dt,dd怎么使用html中,dl和dd和dt标签是什么意思,什么时候需要用定义列表的意思 一般用在图文并排的时候 应网友提问。html中&#xff0c;dl和dd和dt标签是什么意思&#xff0c;什么时候需要html中&#xff0c;dl和dd和dt标签的意思如下&#xff1a;dl标签…

mysql存储引擎优化参数

MySQL配置参数优化本文来自道森学习笔记&#xff0c;版权归 http://wubx.net/ 所有MyISAM存储引擎优化涉及参数如下&#xff1a;Key_buffery_sizeConcurrent_insert 2 | WAAYSBulk_insert_buffer_size8MMyisam_recover_optionsFORCEMyisam_recover_threads1Myisam_sort_buffer…

实现 laravel 的artisan

laravel 的 artisan 命令行太好用了&#xff0c;换个框架没有这个功能&#xff0c;于是自己学习实现一些&#xff0c;直接上代码 新建目录 -artisan --bin --src 进入artisan composer init composer require symfony/console #!/usr/bin/env php<?phpuse Symfony\Comp…

cdev 结构体与字符设备的注册

在 linux 2.6内核中&#xff0c;使用 cdev结构体描述字符设备&#xff0c;cdev 的定义在 <linux/cdev.h> 中可找到&#xff0c;其定义如下&#xff1a;引用 struct cdev { struct kobject kobj; struct module *owner; const struct file_operation…

JVM调优总结(七)-典型配置举例1

以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制&#xff1a;相关操作系统的数据模型&#xff08;32-bt还是64-bit&#xff09;限制&#xff1b;系统的可用虚拟内存限制&#xff1b;系统的可用物理内存限制。32位系统下&am…

Nginx多种负载均衡策略搭建

背景介绍 上篇介绍了利用Nginx反向代理实现负载均衡&#xff0c;本文详细讲述Nginx下的几种负载均衡策略。 轮询 轮询&#xff0c;顾名思义&#xff0c;就是轮流请求&#xff0c;基于上篇文章的介绍&#xff0c;我们将负载均衡策略聚焦于default.conf文件的upstream。 upstream…

基于GCCAVR的TLC2543读写程序----模拟SPI方式实现

TLC2453的操作也比较简单&#xff0c;通过模拟的方式实现只需要看一下时序图把时序搞对即可。 在硬件SPI中&#xff0c;读和写实可以通过硬件同步进行的&#xff0c;因此在写入本次命令字时可以同时读取上一次命令的数据&#xff0c;在模拟SPI的方式中&#xff0c;读和写无法同…

html设置点击事件相同,html有多个类名相同的div,如何给每个div绑定click事件并区分?...

1.页面有9个div&#xff0c;类名都是.flag&#xff0c;然后想给每个div都绑定一个click事件&#xff0c;点击.flag时&#xff0c;获取其后代元素.count的值和.ds-subtitle的rel属性。下面这样的写法请问哪里出错了&#xff1f;请看开始三行后面注释$(document).ready(function(…

利用Apache POI读取并解析Excel的数据

/* * Created on 2010-12-9 * java读取excel文件 * */import java.io.FileInputStream;import java.io.FileOutputStream;//import java.text.DecimalFormat; import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.…

计算机语言学 考研学校,2019考研专业:语言学及应用语言学

中国教育在线讯 2019考研&#xff0c;对考研专业了解越多&#xff0c;考研人越易选出适合自己的方向&#xff0c;中国教育在线考研频道将陆续推出2019考研业解析系列&#xff0c;进行基本的专业介绍&#xff0c;探析就业前景与方向&#xff0c;推荐知名院校&#xff0c;介绍相近…

我感觉这个书上的微信小程序登陆写得不好

基本功能是OK&#xff0c;但是感觉传的数据太多&#xff0c;不安全&#xff0c;需要改写。 App({d: {hostUrl: http://www.test.com/index.php, //请填写您自己的小程序主机URLappId: "xxx",appKey: "xxx",ceshiUrl: http://www.test.com/index.php,//请填…

计算机组装维修中级试题,计算机维修工中级理论知识试卷.doc

计算机维修工中级理论知识试卷.doc职业技能鉴定国家题库计算机维修工中级理论知识试卷注 意 事 项本试卷依据2007年颁布的《计算机(微机)维修工》国家职业标准命制&#xff0c;考试时间&#xff1a;90分钟请首先按要求在答题纸上填写您的姓名、准考证号、参考等级、参考工种。请…

day05 selenium库的基础使用

selenium请求库实现爬取京东商品信息:    导入selenium库 利用try-catch实现对是否能连接进行异常检测与捕获 get方式向京东主页发送请求 通过id查找iput输入框 send_kyes为当前标签传值 通过send_keys按回车键实现查询 通过find_elements_by_class_name爬取每个商品   …

java入门5-asp.net关注

第 二 章   数 据 类 型 2.1 数 据 类 型 数 据 类 型 指 明 了 变 量 或 表 达 式 的 状 态 和 行 为 。 Java 的数据 类 型 如 下 所 示 : Java不 支 持 C、 C中 的 指 针 类 型 、 结 构 体 类 型 和 共 用 体类型 。 本 章 我 们 主 要 介 绍 简 单 类 型 。 2.2 常…

iOS CoreAnimation

为什么80%的码农都做不了架构师&#xff1f;>>> 前言&#xff1a;这篇文章太全了&#xff0c;忍不住就转了&#xff0c;原地址 CoreAnimation&#xff0c;另外前面写过一篇简单的动画IOS简单动画 核心动画,开发人员可以为他们的应用创建动态用户界面,而无需使用低级…