首页 > 其他分享 >希尔排序的实现

希尔排序的实现

时间:2023-06-21 14:25:17浏览次数:41  
标签:ShellInsert 实现 void elem gap int 希尔 SqList 排序

#include<stdio.h>
#include<stdlib.h>
typedef int KeyType;
typedef struct {
KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/
int Length;
}SqList;
void CreatSqList(SqList *L);/*待排序列建立,由裁判实现,细节不表*/
void ShellInsert(SqList L,int dk);
void ShellSort(SqList L);

int main()
{
SqList L;
int i;
CreatSqList(&L);
ShellSort(L);
for(i=1;i<=L.Length;i++)
{
printf("%d ",L.elem[i]);
}
return 0;
}
void ShellSort(SqList L)
{
/*按增量序列dlta[0…t-1]对顺序表L作Shell排序,假设规定增量序列为5,3,1*/
int k;
int dlta[3]={5,3,1};
int t=3;
for(k=0;k<t;++k)
ShellInsert(L,dlta[k]);
}

void ShellInsert(SqList L,int gap){
for (int i=gap;i<L.Length;++i){
for(int j=i+gap;j<L.Length+1;j+=gap){
if (L.elem[j]<L.elem[j-gap]){
int temp =L.elem[j];
int k=j-gap;
while (k>=1&&L.elem[k]>=temp){
L.elem[k+gap]=L.elem[k];
k-=gap;
}
L.elem[k+gap]=temp;

}
}

}

}

 

标签:ShellInsert,实现,void,elem,gap,int,希尔,SqList,排序
From: https://www.cnblogs.com/yankeqi/p/17496094.html

相关文章

  • 电蒸锅是如何实现缺水提醒的
    电蒸锅是一种非常方便的厨房电器,可以帮助我们快速地蒸煮食物。但是,如果在使用电蒸锅的过程中没有及时添加水,就会导致电蒸锅的损坏。因此,电蒸锅通常都会配备缺水提醒功能,以便及时提醒用户添加水。电蒸锅实现缺水提醒的关键是光电液位传感器。光电液位传感器是一种能够检测液体水平高......
  • 通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)
    毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨头Google已经率先支持了Passkeys登录方式,只须在设备上利用PIN码解锁、指纹或面部辨识等生物识别方式,即可验......
  • Java乐观锁实现文章点击量、收藏计数、点赞计数
    Java乐观锁实现文章点击量、收藏计数、点赞计数......
  • 基于安卓游戏商店app设计与实现
    随着社会发展,网络也不断的高速发展,网络网页新闻已经成为全国甚至全球人民获取新闻的主要途径之一,传统的新闻门户虽然拥有海量信息,却只是扮演信息集合的角色。用户只能被动式地浏览网站提供的信息,查找需要的内容。如何为每个用户提供快速、准确的信息,以满足个人的实际需求,已成为业界......
  • react学习,实现子组件监听父组件对像的变化
    我们可以结合useEffet,useRef,useState来实现子组件监听父组件对像的变化:import{useEffect,useRef,useState}from"react";interfaceMyProps={counter:number;};constMyChildComponent:React.FC<MyProps>=({counter})=>{constprevCounterRef=u......
  • odoo14 ,实现主从表的连动
    需求:主表中的布尔字段的值。影响从表中字段的显示与否。 上代码<!--PPS样图片--><fieldname="pps_img"widget="image"attrs="{'column_invisible':[('parent.is_pps','=',False)]}&quo......
  • 网站接入微信支付后如何实现退款和取消预约?
    需求取消预约分两种情况:未支付取消订单,直接通知医院取消预约状态并更新相关数据,然后修改平台订单状态已支付取消订单,退款给用户并在数据库中记录退款记录,通知医院取消预约状态并更新相关数据,然后修改平台订单状态第01章-未支付取消预约1、后端接口1.1、ControllerFrontOr......
  • PCL:点云滤波汇总:算法原理 + 代码实现(转载)
    原文链接:https://blog.csdn.net/weixin_46098577/article/details/114385690PCL官方链接:https://pointclouds.org/documentation/group__filters.html目录1PassThrough直通滤波器1.1官网描述1.2算法原理1.3代码实现2VoxelGrid体素滤波器2.1官网描述2.2算法原理2.3代码......
  • pytest + yaml 框架 -40.录制接口转 yaml 用例实现
    前言pytest+yaml框架基本不用写python代码,只需写yaml文件用例就能实现接口自动化。现在引入接口录制功能,连yaml文件也不用写了,点点点就能生成yaml用例文件了。录制功能在v1.3.4版本上实现pipinstalpytest-yaml-yoyo环境准备录制功能环境没给大家预装,考虑大大家......
  • 基于CAS实现自旋锁
    #include<aomic>classSpinLock{public:SpinLock():flag_(false){}voidlock(){boolexcept=false;while(!flag_.compare_exchange_weak(expect,true)){expect=false;}}voidunlock(){flag_.store......