当前位置: 首页 > news >正文

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

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     else13     {   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     else24         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 & 0x55 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奇数位为113     //a:1010偶数位为114     //一个整数32位,十六进制:0x55555555,0xaaaaaaaa15     //&:按位与全1为1,其余为016     //0x55555555 & n :保留奇数位17     //0xaaaaaaaa & n :保留偶数位18     //再位运算,奇数位左移1(<<)奇变偶19     //         偶数位右移1 (>>) 偶变奇20     //再按位或|,有1为1,全0为0,合并一起21 22     return 0;23 } 

运行结果:

相关文章:

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

1.冒泡排序、简单选择排序、直接插入排序、快速排序(升序) 程序代码&#xff1a; 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[],in…...

FastDFS安装并整合Openresty

FastDFS安装并整合Openresty 一、安装环境准备【CentOS7.9】二、FastDFS--tracker安装2.1.下载fastdfs2.2.FastDFS安装环境2.3.安装FastDFS依赖libevent库2.4.安装libfastcommon2.5.安装 libserverframe 网络框架2.6.tracker编译安装2.7.安装之后文件目录介绍2.8.错误处理2.9.配…...

93 log4j-slf4j-impl 搭配上 log4j-to-slf4j 导致的 StackOverflow

前言 呵呵 最近想要 做一个 mongo 低版本的客户端读取高版本的服务端传递过来的数据造成的一个错误的时候, 出现了这样的问题 引入了 mongo-java-driver 之后, 使用相关 api 的时候会触发 com.mongo.internal.connection.BaseCluser 的初始化, 其依赖的 Loggers 间接的依赖…...

客户端会话技术-Cookie

一、会话技术 1.1 概述 会话&#xff1a;一次会话中包含多次**请求和响应** 一次会话&#xff1a;浏览器第一次给服务器资源发送请求&#xff0c;此时会话建立&#xff0c;直到有一方断开为止 会话的功能&#xff1a;在一次会话的范围内的多次请求间&#xff0c;共享数据 …...

rsa加密登录解决方案

1.问题 账密登录方式中用户输入密码后&#xff0c;把账号、密码通过http传输到后端进行校验&#xff0c;然而密码属于敏感信息&#xff0c;不能以明文传输&#xff0c;否则容易被拦截窃取&#xff0c;因此需要考虑如何安全传输密码 2.解决方案 使用rsa加密方式&#xff0c;r…...

速盾:海外服务器用了cdn还是卡怎么办

海外服务器使用CDN卡顿问题的解决办法 在如今互联网高速发展的时代&#xff0c;海外服务器成为了许多企业和个人用户的首选&#xff0c;因为它能够提供更高的带宽和更稳定的网络连接。然而&#xff0c;尽管海外服务器在网络性能方面表现出色&#xff0c;但在使用过程中仍然可能…...

[python-opencv] PNG 裁切物体

拿到一组图PNG的图&#xff0c;边缘有点太宽了&#xff0c;需要裁切一下&#xff0c;为了这个需求&#xff0c;简单复习一下基本语法。 1. 读取PNG的4个通道 image cv.imread(image_path, cv.IMREAD_UNCHANGED) 附参数说明&#xff1a; IMREAD_UNCHANGED -1 返…...

机器学习——有监督学习和无监督学习

有监督学习 简单来说&#xff0c;就是人教会计算机学会做一件事。 给算法一个数据集&#xff0c;其中数据集中包含了正确答案&#xff0c;根据这个数据集&#xff0c;可以对额外的数据希望得到一个正确判断&#xff08;详见下面的例子&#xff09; 回归问题 例如现在有一个…...

MySQL单主模式部署组复制集群

前言 本篇文章介绍MySQL8.0.27版本的组复制详细搭建过程&#xff0c;教你如何快速搭建一个三节点的单主模式组复制集群。 实际上&#xff0c;MySQL组复制是MySQL的一个插件 group_replication.so&#xff0c;组中的每个成员都需要配置并安装该插件&#xff0c;配置和安装过程…...

【大厂AI课学习笔记】【1.5 AI技术领域】(10)对话系统

对话系统&#xff0c;Dialogue System&#xff0c;也称为会话代理。是一种模拟人类与人交谈的计算机系统&#xff0c;旨在可以与人类形成连贯通顺的对话&#xff0c;通信方式主要有语音/文本/图片&#xff0c;当然也可以手势/触觉等其他方式 一般我们将对话系统&#xff0c;分…...

【ARM 嵌入式 编译系列 2.7 -- GCC 编译优化参数详细介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 GCC 编译优化概述常用优化等级-O1 打开的优化选项-O2 打开的优化选项-O3 打开的优化选项-Os 打开的优化选项优化技术使用优化选项的注意事项GCC 编译优化概述 GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fort…...

《剑指 Offer》专项突破版 - 面试题 38、39 和 40 : 通过三道面试题详解单调栈(C++ 实现)

目录 面试题 38 : 每日温度 面试题 39 : 直方图最大矩形面积 方法一、暴力求解 方法二、递归求解 方法三、单调栈法 面试题 40 : 矩阵中的最大矩形 面试题 38 : 每日温度 题目&#xff1a; 输入一个数组&#xff0c;它的每个数字是某天的温度。请计算每天需要等几天才会…...

动态规划C语言

#include <stdio.h> #include <stdlib.h> //0-1背包问题是一种经典的组合优化问题&#xff0c; //问题描述为&#xff1a;有一个给定容量的背包和一组具有不同价值和重量的物品&#xff0c;如何选择物品放入背包中&#xff0c;以使得背包中物品的总价值最大化&…...

基于微信小程序的校园二手交易平台

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

K8S系列文章之 [使用 Alpine 搭建 k3s]

官方文档&#xff1a;K3s - 轻量级 Kubernetes | K3s 官方描述&#xff0c;可运行在 systemd 或者 openrc 环境上&#xff0c;那就往精简方向走&#xff0c;使用 alpine 做系统。与 RHEL、Debian 的区别&#xff0c;主要在防火墙侧&#xff1b;其他基础配置需求类似&#xff0…...

计算机视觉 | OpenCV 实现手势虚拟控制亮度和音量

Hi&#xff0c;大家好&#xff0c;我是半亩花海。在当今科技飞速发展的时代&#xff0c;我们身边充斥着各种智能设备&#xff0c;然而&#xff0c;如何更便捷地与这些设备进行交互却是一个不断被探索的课题。本文将主要介绍一个基于 OpenCV 的手势识别项目&#xff0c;通过手势…...

python28-Python的运算符之三目运算符

Python可通过if语句来实现三目运算符的功能&#xff0c;因此可以近似地把这种if语句当成三目运算符。作为三目运算符的f语句的语法格式如下 True_statements if expression else False_statements 三目运算符的规则是:先对逻辑表达式expression求值&#xff0c;如果逻辑表达式…...

高德 API 10009

问题 笔者使用高德地图所提供的API接口&#xff0c;访问接口报错 {"info":"USERKEY_PLAT_NOMATCH","infocode":"10009","status":"0","sec_code_debug":"d41d8cd98f00b204e9800998ecf8427e"…...

Go 语言中如何大小端字节序?int 转 byte 是如何进行的?

嗨&#xff0c;大家好&#xff01;我是波罗学。 本文是系列文章 Go 技巧第十五篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 我们先看这样一个问题&#xff1a;“Go 语言中&#xff0c;将 byte 转换为 int 时是否涉及字节序&#xff08;endianness&#xff09;&#x…...

论文阅读——MP-Former

MP-Former: Mask-Piloted Transformer for Image Segmentation https://arxiv.org/abs/2303.07336 mask2former问题是&#xff1a;相邻层得到的掩码不连续&#xff0c;差别很大 denoising training非常有效地稳定训练时期之间的二分匹配。去噪训练的关键思想是将带噪声的GT坐标…...

Sunshine终极指南:8步搭建你的个人游戏串流服务器

Sunshine终极指南&#xff1a;8步搭建你的个人游戏串流服务器 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上流畅玩PC游戏吗&#xff1f;Sunshine是一款免费开源…...

深耕财税赋能+精准GEO推广 好账本兰宝玺双线发力助企破局

在数字经济飞速发展的当下&#xff0c;财税服务的专业性与营销推广的精准度&#xff0c;成为中小微企业稳健成长的两大核心支撑。深耕苏州、昆山财税领域八年的98后实干者兰宝玺&#xff0c;依托好账本财税平台的坚实后盾&#xff0c;不仅以精细化财税服务为创业者保驾护航&…...

从DJI N3到PX4:高飞老师组px4ctrl状态机实战解析与避坑指南

从DJI N3到PX4&#xff1a;状态机设计与控制逻辑迁移实战指南 在无人机飞控系统开发领域&#xff0c;状态机设计一直是核心难点之一。当开发者需要从DJI N3平台迁移到PX4生态时&#xff0c;控制逻辑的差异往往成为最大的技术障碍。本文将深入解析两种平台的状态机实现差异&…...

2026年想快速提分?邵阳这些高复学校或许能帮你实现梦想!

高考失利并不意味着人生就此止步&#xff0c;复读是很多考生重新冲刺梦想的选择。在邵阳&#xff0c;有不少优秀的高复学校&#xff0c;今天就重点为大家介绍邵阳湘郡铭志学校高复部&#xff0c;同时也会提及其他一些知名高复学校&#xff0c;帮助大家在选择时进行对比。一、解…...

Taotoken Token Plan套餐如何帮助初创团队控制AI调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken Token Plan套餐如何帮助初创团队控制AI调用成本 对于预算有限的初创团队和独立开发者而言&#xff0c;将大模型能力集成到…...

华为BGP路由实战:从原理到策略调优的深度解析

1. 华为BGP路由技术入门指南 第一次接触华为BGP路由配置时&#xff0c;我被那些专业术语搞得晕头转向。经过多次实战后才发现&#xff0c;BGP就像互联网世界的邮局系统&#xff0c;负责在不同自治系统&#xff08;AS&#xff09;之间传递路由信息。华为设备的BGP实现特别适合企…...

从STM32F103到GD32F303:如何用CubeMX和Keil5低成本‘平替’升级你的项目?

从STM32F103到GD32F303&#xff1a;低成本高性能迁移实战指南 在嵌入式开发领域&#xff0c;芯片选型往往需要在性能与成本之间寻找平衡点。对于已经熟悉STM32F103系列开发但面临成本压力或性能瓶颈的工程师来说&#xff0c;GD32F303系列提供了一个极具吸引力的替代方案。这款国…...

别再手动刷纹理了!用Blender 3.6的镂版映射,5分钟给苹果模型贴上真实贴图

别再手动刷纹理了&#xff01;Blender 3.6镂版映射实战指南 在数字艺术创作中&#xff0c;给3D模型添加纹理是赋予物体真实感的关键步骤。许多Blender初学者在掌握了基础UV展开后&#xff0c;往往会陷入手动绘制纹理的低效循环——用笔刷一点一点"涂抹"贴图&#xff…...

强力解锁:5分钟掌握暗黑破坏神2存档编辑器的核心功能

强力解锁&#xff1a;5分钟掌握暗黑破坏神2存档编辑器的核心功能 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾为刷取一件心仪的暗黑2装备耗费数小时&#xff1f;是否想快速测试不同的角色build却苦于重复练级&#x…...

UDP,TCP协议的格式与机制

目录 一&#xff1a;UDP 1.UDP协议端格式 2.UDP的特点 二&#xff1a;TCP 1.TCP协议段格式 2.确认应答机制 1.确认应答的原理 2.为什么有两个序号&#xff1f;——捎带应答 3.超时重传 4.快速重传 3.连接管理机制 1.三次握手 2.四次挥手 shutdown函数 COLSE_WAI…...