C语言实现各种排序

文章目录

  • C语言实现各种排序
    • 1、冒泡排序
    • 2、简单选择排序
    • 3、直接插入排序
    • 4、希尔排序
    • 5、快速排序
    • 6、堆排序

C语言实现各种排序

1、冒泡排序

冒大泡(将大的数往后放)

void bubble_sort(int *p,int len){for(int i=0;i<len-1;i++){for(int j=0;j<len-1-i;j++){if(*(p+j)>*(p+j+1)){//使用异或运算交换两个的值*(p+j)=*(p+j)^*(p+j+1);*(p+j+1)=*(p+j)^*(p+j+1);*(p+j)=*(p+j)^*(p+j+1);}}}return;
}

2、简单选择排序

每次选择一个数组中最大的数或者最小的数与最最后面或最前面的数进行交换

void simple_select_sort(int *p,int len){
int i=0,j=0,k=0;
for(;i<len-1;i++){k=i;//k记录起始值for(j=i+1;j<len;j++){if(*(p+k)>*(p+j)){k=j;}}if (k!=i){//交换值exchange(p+k,p+i);}}
}

3、直接插入排序

void insert_sort(int *p,int len){
int i=0,j=0,temp=0;for(i=1;i<len;i++){temp=*(p+i);for (j = i-1; j>=0&&*(p+j)>=temp; j--){*(p+j+1)=*(p+j);}*(p+j+1)=temp;}}

4、希尔排序

void shell_sort(int *p,int len){
int temp;
int i,j,k;
//k表示分组
for(k=len/2;k>=1;k=k/2){for(i=k+1;i<len;i++){temp=*(p+i);for(j=i-k;j>=0&&*(p+j)>temp;j=j-k){*(p+j+k)=*(p+j);}*(p+j+k)=temp;}}}

5、快速排序

void quick_sort(int *p,int low,int height){int i=low,j=height;int key=p[low];while(i<j){while(i<j&&p[j]>=key){j--;}if (i<j){p[i]=p[j];}while(i<j&&p[i]<=key){i++;}if(i<j){p[j]=p[i];}        }p[i]=key;if (low<j-1){ quick_sort(p, low, j-1);}if (height>i+1){quick_sort(p, i+1,height);}return;}

6、堆排序

第一个非叶子结点的编号为len/2-1

void heap_sort(int *p,int len){int i=0;for(i=len/2-1;i>=0;i--){heap_adjust(p,i,len-1);}//将第一个与最后一个交换for (i=len-1;i>0;i--){exchange(&p[0],&p[i]);//交换值heap_adjust(p,0,i-1);}}
void heap_adjust(int *p,int start,int end){int father_node=start;int son_node=father_node*2+1;while (son_node<=end){//选出子节点最大的那一个if (son_node+1<=end&&p[son_node+1]>p[son_node]){son_node++;}if (p[father_node]>p[son_node]){return;}else{exchange(&p[father_node],&p[son_node]);father_node=son_node;son_node=father_node*2+1;}}}

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

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

相关文章

【LeetCode】每日一题 - 负二进制转化

负二进制转换 给你一个整数 n &#xff0c;以二进制字符串的形式返回该整数的 负二进制&#xff08;base -2&#xff09;表示。 注意&#xff0c;除非字符串就是 "0"&#xff0c;否则返回的字符串中不能含有前导零。 示例 1&#xff1a; 输入&#xff1a;n 2 输出…

Mysql - 聚合函数和分组查询

当涉及处理数据库中的大量数据时&#xff0c;聚合函数和分组查询是非常重要的。通过聚合函数&#xff0c;可以对数据进行统计和汇总&#xff0c;而分组查询则允许我们根据特定的条件对数据进行分组分析。在这篇文章中&#xff0c;我们将深入探讨MySQL中的聚合函数和分组查询&am…

Flutter应用开发-几种保存简单配置的方式

文章目录 简单配置保存的几种方式使用 shared_preferences 插件优点缺点 使用 hive 插件优点 缺点使用文件存储&#xff1a;优点缺点 简单配置保存的几种方式 在 Flutter 开发的 Android 应用中&#xff0c;保存应用配置并下次启动时读取&#xff0c;有以下几种比较合适的方式…

LabVIEW 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到LabVIEW.2024”。 返回解压后的文件夹&#xff0c;鼠标右击“ni_labview-2024”选择“装载”。 鼠标右击“Install”选择“以管理员身份运行”。 点击“我接受上述2条许可协议”&#xff0c;然后点击“下一步”。 点击“下一步”。 …

asp.net结课作业中遇到的问题解决1

作业要求 实现增删改查导出基本功能。 1、如何设置使得某个背景就是一整个而不是无限填充或者是这个图片的某一部分。 这就要求在设置这一块的时候&#xff0c;长和宽按照背景图片的大小进行设置&#xff0c;比如&#xff1a; 如果&#xff0c;图片的大小不符合你的要求&am…

北大字节提出VAR新范式,GPT超越扩散、视觉生成Scaling Law

前言 来自北京大学和字节跳动的研究团队&#xff0c;提出了一种名为"Visual AutoRegressive (VAR) Modeling"的全新视觉生成范式。VAR 重新定义了图像的自回归学习过程&#xff0c;从而使得GPT风格的自回归模型首次超越扩散模型&#xff0c;在图像生成质量、速度和可…

node环境创建Vue项目

node环境创建Vue项目 目录 node环境创建Vue项目安装node.js安装Vue创建Vue项目 安装node.js 【1】.官网下载 【2】.选择路径 【3】配置环境变量 后面就是一路next完成安装 【4】测试 cmd输入node指令&#xff0c;显示版本号证明安装成功 安装Vue 【1】安装cnpm 这是由淘宝…

大语言模型在专业领域的应用——法律场景下的大语言模型

法律场景下的大语言模型 构建法律相关的大语言模型数据资源总结在法律领域,相关从业人员需要参与合同咨询、审查、案件判决等日常重复性任务。这些任务需要耗费大量的人力成本,亟需面向法律领域的人工智能技术辅助完成这些工作,从而减轻从业人员的工作负担。大语言模型具有优…

最新官方破解版会声会影2024永久序列号和激活码

会声会影2024是一款功能强大的视频编辑软件&#xff0c;它集合了视频剪辑、音频调整、特效添加等多项功能于一身&#xff0c;为用户提供了一个全面且易用的视频制作平台。无论是初学者还是专业视频编辑人员&#xff0c;都能在这款软件中找到满足自己创作需求的工具。 会声会影最…

数字签名学习

1 基本概念 数字签名是一种加密技术&#xff0c;用于验证信息来源的身份和数据的完整性。 就是对一个东西签上自己的名&#xff1b;收到的人可以验证这东西是你发的&#xff1b;这里是用数字的方式&#xff1b; 对字符串也可以签名&#xff0c;签名以后&#xff0c;还是一个…

嘉楠堪智 CanMV K230 的 CanMV-IDE 环境与 MicroPython 编程

嘉楠推出了 CanMV IDE 开发环境&#xff0c;可以使用 MicroPython 开发针对 CanMV K230 的各种程序&#xff0c;同时也提供了大量的例子程序&#xff0c;方便使用者学习。 嘉楠开发者社区&#xff0c;给出了详细的 CanMV K230 教程&#xff0c;可以借以快速上手。 目录 固件…

遭遇字节对齐导致的错误一例

由于系统不支持UTF8中文&#xff0c;所以改成了wchar_t。我看了一下字幕&#xff0c;0、2、4不显示&#xff0c;1、2、3显示。 仔细看了代码&#xff0c;没有发现可疑的地方。相关代码就改了几处。回滚代码&#xff0c;正确。如果直接赋值&#xff0c;正确。同事建议换个字体&…

TikTok引流中海外云手机的实用功能分享

在当下&#xff0c;TikTok已成为全球范围内最受欢迎的社交媒体平台之一&#xff0c;拥有着庞大的用户群体和潜在的商业机会。为了在TikTok上实现更好的引流效果&#xff0c;利用海外云手机成为了一个明智的选择。接下来&#xff0c;我们将深入探讨海外云手机的功能以及它如何助…

卫瓴科技杨炯纬:帮助一线销售做营销 | 躬行者说

我并不假装理解营销技术。我所有关于营销技术的知识&#xff0c;都来自这个行业的躬行者们。他们筚路蓝缕&#xff0c;见证营销技术在中国的成长。Marteker邀请他们谈谈心路历程&#xff0c;以「身在此山中」的视角解读营销技术在中国的光荣与梦想。 「纸上得来终觉浅&#xf…

Swift - 枚举

文章目录 Swift - 枚举1. 枚举的基本用法2. 关联值&#xff08;Associated Values&#xff09;3. 关联值举例4. 原始值5. 隐式原始值&#xff08;Implicitly Assigned Raw Values&#xff09;6. 递归枚举&#xff08;Recursive Enumeration&#xff09;7. MemoryLayout Swift -…

ROS1快速入门学习笔记 - 07话题消息的定义与使用

目录 一、话题模型 二、自定义话题消息 1. 在功能包下创建msg目录用于存储话题文件 2. 在package.xml文件中添加功能包依赖&#xff1b; 3. 在CMakeLists.txt增加编译选项&#xff1b; 4. 完成编译 5. 配置CMakeLists.txt中的编译规则&#xff08;增加发布者和订阅者&am…

Linux 第十三章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

【办公类-22-13】周计划系列(5-5)“周计划-05 周计划表格内教案部分“节日”清空改成“节日“” (2024年调整版本)Win32

背景需求&#xff1a; 本学期19周&#xff0c;用了近10周的时间&#xff0c;终于把周计划教案部分的内容补全了&#xff08;把所有教案、反思的文字都撑满一个单元格&#xff09;&#xff0c; 一、原始教案 二、新模板内的教案 三、手动添加文字后的样式&#xff08;修改教案…

STM32之HAL开发——电容按键

电容按键原理 电容器 (简称为电容) 就是可以容纳电荷的器件&#xff0c;两个金属块中间隔一层绝缘体就可以构成一个最简单的电容。如图 32_1 (俯视图)&#xff0c;有两个金属片&#xff0c;之间有一个绝缘介质&#xff0c;这样就构成了一个电容。这样一个电容在电路板上非常容…

Detla lake with Java--入门

最近在研究数据湖&#xff0c;虽然不知道研究成果是否可以用于工作&#xff0c;但我相信机会总是留给有准备的人。 数据湖尤其是最近提出的湖仓一体化概念&#xff0c;很少有相关的资料&#xff0c;目前开源的项目就三个&#xff0c;分别是hudi, detla lake, iceberg。最终选择…