C语言基本排序算法之shell排序实例

发布时间 - 2026-01-11 03:26:19    点击率:

本文实例讲述了C语言基本排序算法之shell排序。分享给大家供大家参考,具体如下:

shell排序是对直接插入方法的改进方法.

/*-------------------------------------------------------------------------------------
Shell_sort.h
shell排序是对直接插入方法的改进,它并不是对相邻元素进行比较,而是对一定间隔的元素比较.
选择增量序列的几种方法:(为方便,本例采用第一种增量序列)
1. h[1]=size, h[k] = h[k-1]/2.
  最坏运行时间为O(N^2).
  最坏情形:数组长度为2^n,数组的偶数位置上同是一个数,奇数位置上也同是一个数,
       且比偶数位置的小。此时到最后一次遍历前shell排序实际上什么也没做。
       最后一次遍历相当于直接插入方法。
2. Hibbard增量序列: h = 1,3,7,,2^k-1
  这个的区别于上的主要的特点是相邻增量没有公因子
  最坏运行时间为O(n^{1.5});
3. Sedgewick增量序列:{1,5,19,41,109,}
-------------------------------------------------------------------------------------*/
#ifndef SHELL_SORT_H
#define SHELL_SORT_H
#include "typedef.h"
void Shell_sort(T* a, int n)
{
  for(int gap = n; gap > 0; gap = gap/2)
  {
    for(int i = 0; i != n; ++i)
    {
      T temp = a[i];
      int j = i - gap;
      for( ; j >= 0 && a[j] > temp; j = j-gap)
        a[j+gap] = a[j];
      a[j+gap] = temp;
    }
  }
}
#endif

希望本文所述对大家C语言程序设计有所帮助。


# C语言  # 排序算法  # shell排序  # 必须知道的C语言八大排序算法(收藏)  # C语言基本排序算法之桶式排序实例  # C语言排序算法之冒泡排序实现方法【改进版】  # C语言基本排序算法之插入排序与直接选择排序实现方法  # C语言 实现归并排序算法  # C语言 奇偶排序算法详解及实例代码  # C语言 冒泡排序算法详解及实例  # c语言5个常用的排序算法实例代码  # 是一个  # 最坏  # 遍历  # 时间为  # 给大家  # 上也  # 所述  # 第一种  # 什么也没  # 本例  # 长度为  # 几种方法  # 特点是  # 讲述了  # 为方便  # amp  # shell  # gt  # size  # Shell_sort 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  EditPlus 正则表达式 实战(3)  网站建设保证美观性,需要考虑的几点问题!  浅谈redis在项目中的应用  如何在企业微信快速生成手机电脑官网?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  简单实现Android文件上传  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何在云主机上快速搭建多站点网站?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何快速查询网站的真实建站时间?  高防服务器租用指南:配置选择与快速部署攻略  canvas 画布在主流浏览器中的尺寸限制详细介绍  Android使用GridView实现日历的简单功能  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何用西部建站助手快速创建专业网站?  如何在万网自助建站平台快速创建网站?  香港服务器选型指南:免备案配置与高效建站方案解析  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel Docker环境搭建教程_Laravel Sail使用指南  免费网站制作appp,免费制作app哪个平台好?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  如何用wdcp快速搭建高效网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  如何快速搭建高效服务器建站系统?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  微信小程序 wx.uploadFile无法上传解决办法  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Linux网络带宽限制_tc配置实践解析【教程】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何在阿里云部署织梦网站?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何解决hover在ie6中的兼容性问题