排序方法总结(3)希尔排序

2023-05-16

希尔排序

希尔排序是对插入排序的改进,对中等规模的数据排序效率较高!交换的次数变得少了,效率就高了。

希尔排序的算法:(1)相距为k的数据进行比较,若不符合排序的条件,就进行交换。

2)第一次比较时k为数组长度的一半,以后依次减半,直至k为零,比较结束。

下面是希尔排序实现的c代码和c++代码。

c代码:

#include<stdio.h>

 void shell(int a[],int n)

 {

  int k,x,i,j;

  k=n/2;

  while(k>=1)

   {  

      for(i=k;i<n;i++)

      {

       x=a[i];

       j=i-k;               

      while(j>=0&&x<a[j])

        {

         a[j+k]=a[j];                 

         j=j-k;                

        } 

        a[j+k]=x;                              

      }                  

     k=k/2;           

    }      

 } 

 

int main()

{

  int a[10],i; 

  printf("请输入10个数\n"); 

  for(i=0;i<10;i++)

  scanf("%d",&a[i]);

  printf("未排好的数为:\n");

  for(i=0;i<10;i++)  

  printf("%d\t",a[i]);

  shell(a,10);

  printf("已排好的数为:\n");

  for(i=0;i<10;i++)

  printf("%d\t",a[i]);    

 getch();   

 return 0;    

}

C++代码:

#include<iostream>

 void shell(int a[],int n)

 {

  int k,x,i,j;

  k=n/2;

  while(k>=1)

   {  

      for(i=k;i<n;i++)

      {

       x=a[i];

       j=i-k;               

      while(j>=0&&x<a[j])

        {

         a[j+k]=a[j];                 

         j=j-k;                

        } 

        a[j+k]=x;                              

      }                  

     k=k/2;           

    }      

 } 

 

int main()

{

  int a[10],i; 

  cout<<"请输入10个数\n"; 

  for(i=0;i<10;i++)

  cin>>a[i];

  cout<<"未排好的数为:\n";

  for(i=0;i<10;i++)  

  cout<<a[i]<<" ";

  cout<<endl;

  shell(a,10);

  cout<<"已排好的数为:\n";

  for(i=0;i<10;i++)

  cout<<a[i]<<"  ";    

 ;  

 return 0;    

}

希尔排序非常容易实现,算法代码短而简单。希尔排序时插入排序的一种改进,减少了其复制的次数,速度要快很多。原因是,当N值很大时数据项每一趟排序需要的个数很少,但数据项的距离很长。当N值减小时每一趟需要和动的数据增多,此时已经接近于它们排序后的最终位置。正是这两种情况的结合才使希尔排序效率比插入排序高很多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

排序方法总结(3)希尔排序 的相关文章

  • 爱奇艺2018年秋招

    清雨又在吃自助餐了 排在清雨面前的有N种食物 xff0c 排成一排 xff0c 清雨可以选择其中的若干种食物 xff0c 但是不能连续选择相邻的食物 因为清雨很挑食 xff0c 当所有食物都不合口味时 xff0c 他可以一种都不选 xff0
  • 解决公司内部pom文件不能访问外部中央仓库的问题

    那这个时候 xff0c 赶紧去指定的settings xml文件添加mirror地址 xff08 经测试 xff0c http repo2 maven org maven2 可用 xff09 xff1a lt mirror gt lt id
  • mybatis工程遇到的问题

    一 mybatis逆向工程运行成功却没有生成相应的包和文件 1 解决办法 原因 xff1a 逆向工程中的路径问题 xff0c windows和mac等的文件系统路径不同 mac和Linux下应该使用 xff0c windows下应该使用
  • spring和springmvc容器的关系

    spring容器是springmvc的父容器 本着父容器不可访问子容器中父容器没有的内容 xff0c 子容器可以访问父容器中有的内容 xff0c 所以在配置扫描包的时候 xff0c spring容器可以扫描到dao xff0c servic
  • 实践宝典

    Mac下查看已安装的jdk版本及其安装目录 xff1a https blog csdn net caoxiaohong1005 article details 73611424 如何将List集合中相同属性的对象合并 xff1a https
  • 锁对象,无锁,偏向锁,轻量级锁,重量级锁

    1 对象的hashcode和hashcode 返回的值是否是一回事 应该是一回事 xff0c 我的理解就是 xff0c 这个hashcode是在对象无锁的状态下标记的 xff0c Java类 xff0c 在被JVM加载的时候 xff0c J
  • IDEA显示当前类中所有的方法列表

  • 搜狐畅游2019校招笔试题-游戏开发工程师(java)

    题目描述 xff1a 一组无序的自然数集合 xff0c 由0 xff0c 1 xff0c 2 xff0c xff0c xff0c xff0c n的数字和一个的数字X组成 xff0c 请从集合中找出这个重复的数字X 例子 xff1a 输入 x
  • 毕业设计

    1 搭建eclipse xff0c 思考基本功能实现 基本功能 xff1a 2 考虑用不用maven xff0c 导jar包容易一些 3 前后端交互 xff0c xff08 登陆 xff0c 注册 xff0c xff0c xff0c xff
  • 今日头条面试

    问题 xff1a 矿泉水1块钱1瓶 xff0c 喝完以后 xff0c 2个空瓶子可以换一瓶新矿泉水 问 xff1a 花10块钱最后最多能得多少瓶矿泉水 解答 xff1a public class Main public static voi
  • 将mac os 中的mysql 彻底删除

    执行下列命令 sudo rm usr local mysqlsudo rm rf usr local mysql sudo rm rf Library StartupItems MySQLCOMsudo rm rf Library Pref
  • MarkDown的使用

    标题 在需要的文字前增加 以及一个空格 一级标题 二级标题 效果 xff1a 一级标题 二级标题 列表 无序列表加 xff0c 有序列表加1 列表 列表 列表 1 列表 1 列表 2 列表 效果 xff1a 列表 列表 列表 列表 列表 列
  • css,html,js实用锦囊

    一 好看的按钮 lt DOCTYPE html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt HTML CSS Exercise CSS3 bu
  • VMware虚拟机centos克隆完之后网卡eth0的配置以及主机名的配置

    配置完这些就可以了 第一 配置主机名 vim etc hostname 修改主机名 hadoop4 第二 配置网卡的MAC地址 vi etc udev rules d 70 persistent net rules 修改成如下的内容 SUB
  • 启动zookeeper,但是状态显示报错:Error contacting service. It is probably not running

    问题描述 xff1a 安装zookeeper 3 4 10的时候 xff0c 启动正常没报错 xff0c 但zkServer sh status查看状态的时候却出现错误 xff0c 如下 xff1a ZooKeeper JMX enable
  • MySql优化-count(*)和count(列)哪一个更加快

    MySql优化 count 和count 列 哪一个更加快 1 count 列 count 列 的速度是看列的偏移量来决定的 xff0c 理论上 xff0c 越靠前的列速度越快 xff0c 越靠后的列素的越慢 2 count count 的
  • 测试-Mockito的使用

    一 Mockito简述 Mockito的工作原理是通过创建依赖对象的proxy xff0c 所有的调用先经过proxy对象 xff0c proxy对象拦截了所有的请求再根据预设的返回值进行处理 Mockito包依赖 xff1a lt dep
  • Vue+SpringBoot使用注解@CrossOrigin解决跨域问题

    背景 xff1a 前台vue使用本地8082端口 xff0c 后台使用8080端口 xff0c 这样前台访问后台时候就产生了跨域问题 这里是从后台解决跨域问题 span class token annotation punctuation
  • vmware虚拟机和centos连接不上

    1 VM网络设置 点击NAT设置 记住网关和子网ip xff0c 后面会用 2 CentOs网络设置 root 64 localhost download cd etc sysconfig network scripts root 64 l
  • 关于异步,同步,阻塞,非阻塞的理解(转载)

    常规的误区 假设有一个展示用户详情的需求 xff0c 分两步 xff0c 先调用一个HTTP接口拿到详情数据 xff0c 然后使用适合的视图展示详情数据 如果网速很慢 xff0c 代码发起一个HTTP请求后 xff0c 就卡住不动了 xff

随机推荐

  • 程序员的期望与现实

    来自 xff1a 程序员最幽默 xff08 ID xff1a humor1024 xff09 0 我期望的代码 VS 实际代码的工作方式 1 我认为我的代码 VS 项目经理看到的代码 2 我心里想做的架构 VS 我真正写出来的架构 3 开发
  • linux后台执行命令:&和nohup

    当我们在终端或控制台工作时 xff0c 可能不希望由于运行一个作业而占住了屏幕 xff0c 因为可能还有更重要的事情要做 xff0c 比如阅读电子邮件 对于密集访问磁盘的进程 xff0c 我们更希望它能够在每天的非负荷高峰时间段运行 例如凌
  • Java进阶书籍推荐

    学习Java xff0c 书籍是必不可少的学习工具之一 xff0c 尤其是对于自学者而言 废话不多说 xff0c 下边就给大家推荐一些Java进阶的好书 第一部分 xff1a Java语言篇 1 Java编程规范 适合对象 xff1a 初级
  • Linux开机关机执行脚本方法

    1 在 etc rc d init d 下创建脚本 xff0c 要遵守service script的标准 xff1b 例如 xff1a vi etc rc d init d gfs bin bash case 34 1 34 in rest
  • Ubuntu 出现apt-get: Package has no installation candidate问题

    今天在安装软件的时候出现了Package has no installation candidate的问题 xff0c 如 xff1a apt get install lt packagename gt Reading package li
  • 深度学习(2):DenseNet与图片文字识别

    目的 xff1a 基于深度学习算法DenseNet对图片进行文字识别 xff0c 即OCR转换为文字 xff0c 并将图片进行可视化输出 一 DenseNet算法 DenseNet的基本思路与ResNet一致 xff0c 但是它建立的是前面
  • 安装配置vscode

    远程Linux服务器越来越慢 换成vscode开发好了 xff0c 费时操作放在后台运行 xff0c 不影响前端界面 安装VSCode Visual Studio Code 离线安装扩展 先在 Extensions for Visual S
  • Postman传入date类型

    字符串输入格式 xff1a 2021 08 01 00 00 00 Date输入格式 xff1a 2019 09 09 11 20 20 插入到数据库中是DATE类型 xff1a 先获取到参数转为String类型 xff0c 在格式化为Da
  • 《Activity显示界面历险记》—说说View的那些理不清的关系

    前言 在Activity显示View的过程中 xff0c 有一些重要的角色总让人理不清 xff0c 比如PhoneWindow DecorView ViewRootImpl 也常常有面试题会问到 xff0c 他们四者之间的关系 xff1f
  • smartBi数据源连接与业务主题及七大数据集及透视分析与仪表盘四大分析展示经验总结

    smartBi经验总结 数据门户 电脑主题的资源发布后 xff0c 发布的资源可以在数据门户中看到 xff0c 数据门户界面包含 xff1a 首页 xff0c 报表展示目录 xff0c 报表展示明细资源 首页的设置在系统运维中 系统选项 公
  • java 中 Color类

    Color类 Color类是用来封装颜色的 xff0c 在上面的例子中多次用到 使用Color对象较为简单的方法是直接使用Color类提供的预定义的颜色 xff0c 像红色Color red 橙色Color orange等 xff1b 也可
  • C语言位运算符:与、或、异或、取反、左移和右移

    语言位运算符 xff1a 与 或 异或 取反 左移和右移 位运算是指按二进制进行的运算 在系统软件中 xff0c 常常需要处理二进制位的问题 C语言提供了6个位操作运算符 这些运算符只能用于整型操作数 xff0c 即只能用于带符号或无符号的
  • android 打开蓝牙设备 显示已经配对的蓝牙设备 ,并将已配对的蓝牙设备显示在textview中

    xff08 1 xff09 要想使用android 手机的Bluetooth xff0c 需要在androidmanifest文件中加入使用蓝牙的权限 lt uses permission android name 61 34 androi
  • iOS 7 点击按钮切换视图

    xff08 1 xff09 创建一个项目 xff0c 名字为切换视图 xff08 2 xff09 打开Main storyboard文件 xff0c 将视图中的ViewController视图控制器拖动到画布中 xff08 3 xff09
  • Javaweb 入门测试程序(jsp)

    关于进行jsp程序开发的入门测试小程序 xff08 1 xff09 必须的工具软件 java开发工具包jdk 需要进行环境变量的设置 xff0c 有Java开发基础的人这一步一看就懂 xff01 xff08 2 xff09 安装MyEcli
  • 自媒体平台运营的感悟

    1 关键是自媒体平台的定位 西游记中唐僧有着坚定的志向 西天取经 xff0c 普渡众生 抱着这样的初心和宗旨 xff0c 打造了自己的取经团队 一路上历经九九八十一难 xff0c 初心不改 xff0c 终于到达西天 xff0c 取得真经 x
  • 排序方法总结(1)冒泡排序 选择排序

    排序方法是一种基本的 重要的算法 xff0c 排序的方法有很多 xff0c 现把一些基本排序方法的算法和c 代码列出如下 xff0c 供大家思考 xff0c 借鉴 xff0c 进步 在进行排序之前首先要做的一件事就是选择排序的准则 xff0
  • 排序方法总结(2)插入排序

    插入排序 插入排序类和大家玩的纸牌游戏有些类似 xff0c 在发牌的过程的过程中用右手起的牌 xff0c 总是和左手里的排进行比较 xff0c 然后放在恰当的位置 这就是插入排序的思想 以数组为例 xff0c 其算法是 xff1a xff0
  • 关闭IDEA保存后自动添加空格

    IDEA保存后会给每行自动添加空格 xff0c 关闭这个功能
  • 排序方法总结(3)希尔排序

    希尔排序 希尔排序是对插入排序的改进 xff0c 对中等规模的数据排序效率较高 xff01 交换的次数变得少了 xff0c 效率就高了 希尔排序的算法 1 相距为 k 的数据进行比较 xff0c 若不符合排序的条件 xff0c 就进行交换