2.6:冒泡、简选、直插、快排,递归,宏

news2024/11/15 13:40:36

1.冒泡排序、简单选择排序、直接插入排序、快速排序(升序)

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 void Bubble(int arr[],int len);
  5 void simple_sort(int arr[],int len);
  6 void insert_sort(int arr[],int len);
  7 int one_sort(int arr[],int low,int high);
  8 void output(int arr[],int len);
  9 void quick_sort(int arr[],int low,int high);
 10 int main(int argc, const char *argv[])
 11 {
 12     int arr[]={23,24,12,5,33,5,34,7};
 13     int len=sizeof(arr)/sizeof(arr[0]);
 14 /*  //冒泡排序升序
 15     Bubble(arr,len);
 16     //简单选择排序升序
 17     simple_sort(arr,len);
 18     //直接插入排序升序
 19     insert_sort(arr,len);*/
 20     //快速排序
 21     quick_sort(arr,0,len-1);
 22     //输出
 23     output(arr,len);
 24     return 0;
 25 }
 26 //冒泡排序升序
 27 void Bubble(int arr[],int len)
 28 {
 29     for(int i=1;i<len;i++)
 30     {
 31         for(int j=0;j<len-i;j++)
 32         {
 33             if(arr[j]>arr[j+1])
 34             {
 35                 int t=arr[j];
 36                 arr[j]=arr[j+1];
 37                 arr[j+1]=t;
 38             }
 39         }
 40     }
 41 }
 42 //输出
 43 void output(int arr[],int len)
 44 {
 45     for(int i=0;i<len;i++)
 46     {
 47         printf("%-4d",arr[i]);
 48     }
 49     puts("");
 50 }
 51 //简单选择排序升序
 52 void simple_sort(int arr[],int len)
 53 {
 54     for(int i=0;i<len-1;i++)
 55     {
 56         int min=i;
 57         for(int j=i+1;j<len;j++)
 58         {
 59             if(arr[min]>arr[j])
 60                 min=j;
 61         }
 62         if(i!=min)
 63         {
 64             int t=arr[i];
 65             arr[i]=arr[min];
 66             arr[min]=t;
 67         }
 68     }
 69 }
 70 //直接插入排序升序
 71 void insert_sort(int arr[],int len)
 72 {
 73     //有序序列:第一个    无序序列:剩余元素
 74     for(int i=1;i<len;i++)
 75     {
 76         int j;
 77         int temp=arr[i];//后移,保存第一个插入元素(arr[1])
 78         for(j=i-1;j>=0&&arr[j]>temp;j--)//依次和有序序列倒叙比较后移
 79             arr[j+1]=arr[j];
 80         arr[j+1]=temp;
 81     }
 82 }
 83 //快速排序(基于有序数列)
 84 //一次排序
 85 //返回基准值下标(中间值下标)
 86 int one_sort(int arr[],int low,int high)
 87 {
 88     int key=arr[low];
 89     while(low<high)//low==high结束
 90     {
 91         while(low<high&&key<=arr[high])//倒叙比较
 92             high--;
 93         arr[low]=arr[high];
 94         while(low<high&&key>=arr[low])//正序比较
 95             low++;
 96         arr[high]=arr[low];
 97     }
 98     arr[low]=key;
 99     return low;
100 }
101 //快排
102 void quick_sort(int arr[],int low,int high)
103 {
104     //判空判一
105     if(low>=high)
106         return;
107     //一次排序
108     int mid=one_sort(arr,low,high);
109     //递归左子序列
110     quick_sort(arr,low,mid-1);
111     //递归右子序列
112     quick_sort(arr,mid+1,high);
113 }  

运行结果:

2.递归函数计算非负整数各个位之和

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int DigitSum(int n);
  5 int main(int argc, const char *argv[])
  6 {
  7     int n;
  8     printf("please enter n:");
  9     scanf("%d",&n);
 10     if(n<0)
 11         printf("num error\n");
 12     else
 13     {   
 14         int sum=DigitSum(n);
 15         printf("%d\n",sum);
 16     }
 17     return 0;
 18 }
 19 int DigitSum(int n)
 20 {   
 21     if(n==0)
 22         return 0;
 23     else
 24         return n%10+DigitSum(n/10);
 25 }    

运行结果:

3.写一个宏,实现int型整数的二进制位的奇数位和偶数位交换

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 #define SWAP(n) (((n & 0xaaaaaaaa) >> 1) | ((n & 0x5
  5 int main(int argc, const char *argv[])
  6 {
  7     int n;
  8     printf("please enter n:");
  9     scanf("%d",&n);
 10     int ret=SWAP(n);
 11     printf("ret=%d\n",ret);
 12     //5:0101奇数位为1
 13     //a:1010偶数位为1
 14     //一个整数32位,十六进制:0x55555555,0xaaaaaaaa
 15     //&:按位与全1为1,其余为0
 16     //0x55555555 & n :保留奇数位
 17     //0xaaaaaaaa & n :保留偶数位
 18     //再位运算,奇数位左移1(<<)奇变偶
 19     //         偶数位右移1 (>>) 偶变奇
 20     //再按位或|,有1为1,全0为0,合并一起
 21 
 22     return 0;
 23 } 

运行结果:

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

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

相关文章

pwn旅行之[WUSTCTF 2020]getshell2(一些小知识)

题目分析1 首先打开这个题目的链接的时候&#xff0c;看到了ret2syscall&#xff0c;以为是一个纯正的syscall的题&#xff0c;结果&#xff0c;做的时候发现这个题的危险函数限制的字符串个数不足以写入syscall需要的所有地址&#xff0c;所以&#xff0c;这里参考dalao们的方…

成都爱尔林江院长讲解RGP,一种透氧且度数“上限极高”的隐形眼镜

想戴隐形眼镜&#xff0c;脱离框架的束缚。 想戴可又不知道该怎么选。 能夜晚戴镜白天摘镜的角膜塑形镜&#xff0c;近视超过600度又戴不了。 软性隐形眼镜无论透明的还是美瞳&#xff0c;大多透氧率低对眼睛也不太好。 RGP&#xff0c;一种硬性透氧性角膜接触镜&#xff0…

甲骨文吴承杨:2024年才刚开始,生成式AI已在重塑行业 | 探路2024

ITValue 到2026年&#xff0c;将有超过80%的企业使用生成式AI的API或模型&#xff0c;或在生产环境中部署支持生成式AI应用。 作者&#xff5c;杨丽 首发&#xff5c;钛媒体 ITValue “企业需要的是能够改善业务成果的生成式AI功能和用例。除此之外&#xff0c;企业还需要一个可…

探索Web API SpeechSynthesis:给你的网页增添声音

Web API SpeechSynthesis是一项强大的浏览器功能&#xff0c;它允许开发者将文本转换为语音&#xff0c;并通过浏览器播放出来。本文将深入探讨SpeechSynthesis的控制接口&#xff0c;包括其功能、用法和一个完整的JavaScript示例。 参考资料&#xff1a;SpeechSynthesis - Web…

安卓学习笔记之八:本地化的简单例子(kotlin版本)

本地化及多语言支持&#xff0c;是目前手机软件必须面对的问题&#xff0c;这里用一个简单的例子来说明在Android Studio下如何实现。 创建一个Empty Views Activity项目&#xff0c;语言选择Kotlin 实现一个简单的功能&#xff0c;一条欢迎&#xff0c;一个按钮&#xff0c;…

博客|基于Springboot的个人博客系统设计与实现(源码+数据库+文档)

个人博客系统目录 目录 基于Springboot的个人博客系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 &#xff08;1&#xff09;用户管理 &#xff08;2&#xff09;文章分类管理 &#xff08;3&#xff09;公告信息管理 &#xff08;4&#…

【数据分享】1929-2023年全球站点的逐日降水量数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全…

Vue3大事件项目(ing)

文章目录 核心内容1.大事件项目介绍2.大事件项目创建3.Eslint配置代码风格4.配置代码检查工作流问题: pnpm lint是全量检查,耗时问题,历史问题 5.目录调整6.vue-router4 路由代码解析7.引入 Element Plus 组件库8.Pinia 构建仓库 和 持久化9.Pinia 仓库统一管理 核心内容 Vue3…

2024年信息管理与工业制造与自动化国际学术会议(ICIMIMA2024)

2024年信息管理与工业制造与自动化国际学术会议(ICIMIMA2024) 会议简介 2024年信息管理与工业制造及自动化国际学术会议&#xff08;ICIMIMA2024&#xff09;将在中国三亚举行。会议旨在为信息管理和工业工程领域的专家、学者、工程师和技术人员提供一个平台&#xff0c;分享…

【数据结构】链表OJ面试题3(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 9. 给定一个链表&#xff0c;判断链表中是否有环。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成…

python flask 魔术方法

魔术方法作用_init_对象的初始化方法_class_返回对象所属的类_module_返回类所在的模块_mro_返回类的调用顺序&#xff0c;可以找到其父类&#xff08;用于找父类&#xff09;_base_获取类的直接父类&#xff08;用于找父类&#xff09;_bases_获取父类的元组&#xff0c;按它们…

开启一个服务,将服务器指定的文件读取,传播到网上其他终端

from flask import Flask, render_template_string app Flask(__name__)app.route(/get-data) def get_data():# 读取data.txt文件的内容with open(r./2024/2/4/data.txt, r) as file:data file.read()print(data)# 返回数据的HTML表示return render_template_string(<div…

成功解决:AssertionError: Torch not compiled with CUDA enabled

在运行pycharm项目的时候&#xff0c;出现了以上的报错&#xff0c;主要可以归结于以下两个个方面&#xff1a; 1、没有安装GPU版本的pytorch&#xff0c;只是使用清华的镜像地址下载了CPU版本的pytorch 2、安装的CUDA和安装的pytorch的版本不相互对应 我使用 pip list 来…

【2024.2.5练习】砍竹子(25分)

题目描述 题目分析 考虑题目是否满足贪心。每次施展魔法会使一段连续的竹子高度变为一半左右的平方根。根据样例&#xff0c;似乎每次让最高的竹子变短就能得到最优解。 假设魔法一次只能对一根竹子使用&#xff0c;永远不出现连续相同高度的竹子&#xff0c;那么显然无论使用…

逆向工程:揭开科技神秘面纱的艺术

在当今这个科技飞速发展的时代&#xff0c;我们每天都在与各种电子产品、软件应用打交道。然而&#xff0c;你是否想过&#xff0c;这些看似复杂的高科技产品是如何被创造出来的&#xff1f;今天&#xff0c;我们就来探讨一下逆向工程这一神秘而又令人着迷的领域。 一、什么是…

Unity 接口、抽象类、具体类对象的配合使用案例

文章目录 示例1&#xff1a;接口&#xff08;Interface&#xff09;示例2&#xff1a;抽象类&#xff08;Abstract Class&#xff09;示例3&#xff1a;结合使用接口与抽象类示例4&#xff1a;多接口实现示例5&#xff1a;抽象类与接口结合 在Unity中使用C#编程时&#xff0c;接…

SSL协议是什么?关于SSL和TLS的常见问题解答

SSL&#xff08;安全套接字层&#xff09;及其后继者TLS&#xff08;传输层安全&#xff09;是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用&#xff0c;但我们仍将这些相关技术称为“SSL”或“SSL/TLS”。那么…

[C/C++] -- JSON for Modern C++

JSON for Modern C&#xff08;nlohmann/json&#xff09;是一个流行的 C JSON 库&#xff0c;由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API&#xff0c;使得在C中解析和生成JSON数据变得非常方便。 1.JSON简介 JSON&#xff08;JavaScript Object Notation&…

sqli-labs-master靶场训练笔记(54-65|决战紫禁之巓)

2024.2.5 level-54 1、先判断类型和闭合类型 ?id1/0 #正常 证明不是数字型 ?id1 #错误 ?id1 -- a #正常 判断是 闭合 2、 判断列数 这里需要运气&#xff0c;但是根据前面50多关的经验直接猜测是3列 ?id-1 union select 1,2,3 -- a 3、爆表名&#xf…

时序数据库Influxdb查询多个字段_field同一时间的值,组成一条数据

Influxdb将表格数据多个字段_field从垂直列布局聚合成水平布局行字段。 问题 1、Influxdb 是一种时间序列数据库&#xff0c;在我的项目中主要用来存储换热站的测点数据的。换热站有非常多的测点&#xff0c;我们用Flux 语法去查询测点数据&#xff0c;返回的数据结构是每个测…