2024.2.6

1.现有无序序列数组为23,24,12,5,33,5347,请使用以下排序实现编程

   函数1:请使用冒泡排序实现升序排序

   函数2:请使用简单选择排序实现升序排序

   函数3:请使用快速排序实现升序排序

   函数4:请使用插入排序实现升序排序

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//冒泡
void bubble(int arr[],int len)
{for(int i=1;i<len;i++){for(int j=0;j<len-i;j++){if(arr[j]>arr[j+1]){int t=arr[j];arr[j]=arr[j+1];arr[j+1]=t;}}}
}//简单选择
void simple(int arr[],int len)
{for(int i=0;i<len;i++){int min=i;for(int j=i;j<len;j++){if(arr[min]>arr[j])min=j;}if(min!=i){int t=arr[min];arr[min]=arr[i];arr[i]=t;}}
}
//输出
void output(int arr[],int len)
{for(int i=0;i<len;i++){printf("%-4d",arr[i]);}puts("");
}//一次排序,返回基准值下标
int one_sort(int arr[],int low,int high)
{int key=arr[low];while(low<high){while(low<high && key <= arr[high])high--;arr[low]=arr[high];while(low<high && key >=arr[low])low++;arr[high]=arr[low];}arr[low]=key;return low;
}
//快速排序
void quick(int arr[],int low,int high)
{if(low>=high)return;int mid=one_sort(arr,low,high);quick(arr,low,mid-1);quick(arr,mid+1,high);
}//插入排序
void insert_sort(int arr[],int len)
{int i,j;for(i=1;i<len;i++){int temp=arr[i];for(j=i-1;j>=0;j--){if(arr[j]>temp){arr[j+1]=arr[j];}elsebreak;}arr[j+1]=temp;}
}
int main(int argc, const char *argv[])
{int arr[]={23,24,12,5,33,5,34,7};int len=sizeof(arr)/sizeof(arr[0]);bubble(arr,len);output(arr,len);simple(arr,len);output(arr,len);quick(arr,0,len-1);output(arr,len);insert_sort(arr,len);output(arr,len);return 0;
}

2. 写了个递归函数 DigitSum(n),输入一个非负整数,返回组成它的数字之和

例如:调用 DigitSum(1729),则返回 1+7+2+9,它的和是 19

        输入1729,输出 19

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int DigitSum(int num)
{if(num<0)return -1;else if(num>=0 && num<=9)return num;else{int sum=num%10+DigitSum(num/10);return sum;}
}
int main(int argc, const char *argv[])
{int num;printf("please enter num:");scanf("%d",&num);int s=DigitSum(num);if(s==-1)puts("error");elseprintf("s=%d\n",s);return 0;
}

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

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define SWAP(num) (((num&0xaaaaaaaa)>>1) + ((num & 0x55555555)<<1))
int main(int argc, const char *argv[])
{int num;printf("please enter num:");scanf("%d",&num);printf("s_num=%d\n",SWAP(num));return 0;
}

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

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

相关文章

JVM-运行时数据区程序计数器

运行时数据区 Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 程序计数器的定义 程序计数器&#xff08;Program Counter Register&#xff09;也叫PC寄存器&#xff0c;每个线程会通过程序计数器…

c#: 表达式树的简化

环境&#xff1a; .net 6 一、问题&#xff1f; 有下面的表达式&#xff1a; var nums new List<int> { 1, 2, 3 }; Expression<Func<int, bool>> exp i > i > nums.Max();我们知道&#xff0c;它其实就是&#xff1a;exp i > i > 3; 那么…

【射影几何13 】梅氏定理和塞瓦定理探讨

梅氏定理和塞瓦定理 目录 一、说明二、梅涅劳斯&#xff08;Menelaus&#xff09;定理三、塞瓦(Giovanni Ceva&#xff09;定理四、塞瓦点的推广 一、说明 在射影几何中&#xff0c;梅涅劳斯&#xff08;Menelaus&#xff09;定理和塞瓦定理是非常重要的基本定理。通过这两个定…

TI毫米波雷达开发——High Accuracy Demo 串口数据接收及TLV协议解析 matlab 源码

TI毫米波雷达开发——串口数据接收及TLV协议解析 matlab 源码 前置基础源代码功能说明功能演示视频文件结构01.bin / 02.binParseData.mread_file_and_plot_object_location.mread_serial_port_and_plot_object_location.m函数解析configureSport(comportSnum)readUartCallback…

基于卷积神经网络模型的手写数字识别

基于卷积神经网络模型的手写数字识别 一. 前言二. 设计目的及任务描述2.1 设计目的2.2 设计任务 三. 神经网络模型3.1 卷积神经网络模型方案3.2 卷积神经网络模型训练过程3.3 卷积神经网络模型测试 四. 程序设计 一. 前言 手写数字识别要求利用MNIST数据集里的70000张手写体数…

2024/2/7总结

Node.js 什么是node.js node.js是一个基于chrome v8 引擎的 JavaScript 运行环境。 浏览器是JavaScript的前端运行环境node.js是JavaScript的后端运行环境 node.js中无法调用DOM和BOM等浏览器内置API fs模块 是node.js官方提供的、用来操作文件的模块&#xff0c;它提供了一系…

Redis篇之集群

一、主从复制 1.实现主从作用 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。主节点用来写的操作&#xff0c;从节点用来读操作&#xff0c;并且主节点发生写操作后&#xff0c;会把数据同…

FlinkSql通用调优策略

历史文章迁移&#xff0c;稍后整理 使用DataGenerator 提前进行压测&#xff0c;了解数据的处理瓶颈、性能测试和消费能力 开启minibatch&#xff1a;"table.exec.mini-batch.enabled", "true" 开启LocalGlobal 两阶段聚合&#xff1a;"table.exec.m…

DAC调节DCDC输出电压的电路方案分析

BUCK型电源芯片的调压方式分析 1、前题 BUCK型的电源芯片非常多&#xff0c;常用的如LM2576、LM2596等等&#xff0c;这种芯片优点很多&#xff0c;比如功率大、体积小、效率高等。这种芯片一般都可以通过电阻分压的方式设定反馈脚VFB的电压来改变电源芯片的输出电压。但最近…

mac电脑安装cocoapods出错,以及安装最新版本ruby方法

macbook安装cocoapods时碰到一个报错&#xff1a;大概率是ruby的版本太低导致的 sudo gem install cocoapods ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension. ... Could not create Makefile due to some reason, probably lack of neces…

nginx登录用户验证配置

我们的nginx端口一般都是对外开放的&#xff0c;所以有一定程度上有被别人扫描的风险&#xff0c;所以为了减少被扫描的风险&#xff0c;我们可以配置一个nginx的用户登录验证&#xff1b; 用户验证登录需要nginx的一个模块&#xff1a;ngx_http_auth_basic_module 我们使用…

消息中间件之RocketMQ源码分析(八)

RocketMQ中的消息过滤 RocketMQ设计了消息过滤&#xff0c;来解决大量无意义流量的传输:即对于客户端不需要的消息&#xff0c; Broker就不会传输给客户端&#xff0c;以免浪费宽带&#xff0c;RocketMQ4.2.0支持Tag过滤、SQL92过滤、Filter Server过滤 Tag过滤 第一步:用户发…