C/C++ 排序算法总结
1.冒泡排序
https://blog.csdn.net/weixin_49303682/article/details/119365319
1 #include <stdio.h>2 3 #define N 94 5 void print(int a[])6 {7 for(int i = 0; i < N; i++)8 {9 printf("%d ", a[i]);
10 }
11 printf("\n");
12 }
13
14 void maopao(int a[])
15 {
16 int i, j;
17 for (i = 0; i < N -1; i++)
18 {
19 for (j = 0; j < N -1 -i; j++)
20 {
21 if (a[j] > a[j + 1])
22 {
23 int temp = a[j];
24 a[j] = a[j+1];
25 a[j+1] = temp;
26 }
27 }
28 }
29 }
30
31 int main()
32 {
33 int a[] = {9,3,1,4,2,7,8,6,5};
34 maopao(a);
35 print(a);
36
37 return 0;
38 }
2.选择排序
https://blog.csdn.net/weixin_49303682/article/details/119429850
1 #include <stdio.h>2 3 #define N 94 5 void print(int a[])6 {7 for(int i = 0; i < N; i++)8 {9 printf("%d ", a[i]);
10 }
11 printf("\n");
12 }
13
14 void xuanze(int a[])
15 {
16 int i, j,min,temp;
17 for(i=0;i<N;i++)
18 {
19 min=i;
20 for(j=i+1;j<N;j++)
21 {
22 if(a[j]<a[min])
23 {
24 min=j;
25 }else{
26 break;
27 }
28 }
29 temp=a[min];
30 a[min]=a[i];
31 a[i]=temp;
32 }
33 }
34
35 int main()
36 {
37 int a[] = {9,3,1,4,2,7,8,6,5};
38 xuanze(a);
39 print(a);
40
41 return 0;
42 }
3.直接插入排序
https://blog.csdn.net/weixin_49303682/article/details/119430023
1 #include <stdio.h>2 3 #define N 94 5 void print(int a[])6 {7 for(int i = 0; i < N; i++)8 {9 printf("%d ", a[i]);
10 }
11 printf("\n");
12 }
13
14 void xuanze(int a[])
15 {
16 int i,j,tmp;
17 for(i = 1;i < N;i++){
18 tmp = a[i];
19 for(j = i-1; j >= 0;j--)
20 {
21 if(tmp < a[j])
22 {
23 a[j+1] = a[j];
24 }else{
25 break;
26 }
27 }
28 a[j+1] = tmp;
29 }
30 }
31
32 int main()
33 {
34 int a[] = {9,3,1,4,2,7,8,6,5};
35 xuanze(a);
36 print(a);
37
38 return 0;
39 }
4.shell排序
https://blog.csdn.net/weixin_49303682/article/details/119364710
1 #include <stdio.h>2 3 #define N 94 5 void print(int a[])6 {7 for(int i = 0; i < N; i++)8 {9 printf("%d ", a[i]);
10 }
11 printf("\n");
12 }
13
14 void shell(int a[])
15 {
16 int i,j,d,tmp;
17 for(d = N/2; d > 0; d /= 2)
18 {
19 for(i = d;i < N;i++)
20 {
21 tmp = a[i];
22 for(j = i-d; j >= 0;j-=d)
23 {
24 if(tmp < a[j])
25 {
26 a[j+d] = a[j];
27 }else{
28 break;
29 }
30 }
31 a[j+d] = tmp;
32 }
33 }
34 }
35
36 int main()
37 {
38 int a[] = {9,3,1,4,2,7,8,6,5};
39 shell(a);
40 print(a);
41
42 return 0;
43 }
5.快速排序
https://blog.csdn.net/weixin_49303682/article/details/119364992
1 #include <stdio.h>2 3 #define N 94 5 void print(int a[])6 {7 for(int i = 0; i < N; i++)8 {9 printf("%d ", a[i]);
10 }
11 printf("\n");
12 }
13
14 int kuaisu(int a[],int i,int j)
15 {
16 int tmp;
17 tmp = a[i]; //将a[i]作为基准保存
18 while(i < j)
19 {
20 while(i < j && tmp < a[j])
21 j--;
22 if(i < j)
23 a[i] = a[j];
24 while(i < j && tmp > a[i])
25 i++;
26 if(i < j)
27 a[j] = a[i];
28 }
29 a[i] = tmp;
30 return i;
31 }
32
33 void digui(int a[],int i,int j)
34 {
35 int mid;
36 if(i < j)
37 {
38 mid = kuaisu(a,i,j);
39 digui(a,i,mid-1);
40 digui(a,mid+1,j);
41 }
42 }
43
44 int main()
45 {
46 int a[] = {9,3,1,4,2,7,8,6,5};
47 digui(a,0,N-1);
48 print(a);
49
50 return 0;
51 }
6.二分查找(有序数组)
https://blog.csdn.net/qq_63918780/article/details/122527681
1 #include <stdio.h>2 #include <string.h>3 4 int func(int *a,int j,int x)5 {6 int len = j - 1,i = 0,min;7 while(i<j)8 {9 min = (i+len)/2;
10 if(min > x)
11 {
12 len = min-1;
13 }
14 else if(min < x)
15 {
16 i = min+1;
17 }
18 else
19 {
20 break;
21 }
22 }
23 return min-1;
24 }
25
26 int main()
27 {
28 int j,x,num;
29 int a[] = {1,2,3,4,5,6,7,8,9};
30 printf("输入要查找的数\n");
31 scanf("%d",&x);
32 j = sizeof(a)/sizeof(a[0]);
33 num = func(a,j,x);
34 printf("要查找的数为a[%d]\n",num);
35
36 return 0;
37 }
7.颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
https://blog.csdn.net/weixin_38072112/article/details/104375297
1 #include <stdio.h>2 #include <string.h>3 4 #define N 65 6 void swap(int *a,int *b)7 {8 int temp = *a;9 *a = *b;
10 *b = temp;
11 }
12
13 int main()
14 {
15 int i = 0,start = 0,end = N-1;
16 int a[] = {2,1,1,0,1,0};
17 while(i<N)
18 {
19 if(a[i] == 0)
20 {
21 swap(&a[i],&a[start]);
22 start++;
23 i++;
24 }
25 else if(a[i] == 2)
26 {
27 swap(&a[i],&a[end]);
28 end--;
29 }
30 else
31 {
32 i++;
33 }
34 }
35 for(int i = 0;i<N-1;i++)
36 {
37 printf("%d ",a[i]);
38 }
39
40 return 0;
41 }
相关文章:
C/C++ 排序算法总结
1.冒泡排序 https://blog.csdn.net/weixin_49303682/article/details/119365319 1 #include <stdio.h>2 3 #define N 94 5 void print(int a[])6 {7 for(int i 0; i < N; i)8 {9 printf("%d ", a[i]); 10 } 11 printf("…...
机器学习---RBM、KL散度、DBN
1. RBM 1.1 BM BM是由Hinton和Sejnowski提出的一种随机递归神经网络,可以看做是一种随机生成的 Hopfield网络,是能够通过学习数据的固有内在表示解决困难学习问题的最早的人工神经网络之 一,因样本分布遵循玻尔兹曼分布而命名为BM。BM由二…...
(c语言)有序序列合并
#include<stdio.h>//输入包含三行 //第一行包含两个正整数n,m,用空格分割,n表示第二行第一个升序序列中 //数字的个数,m表示第三行第二个升序序列中数字的个数 //第二行包含n个整数,用空格分割 //第三行包含m个整数,用空格分割 //输出…...
小谈设计模式(18)—适配器模式
小谈设计模式(18)—适配器模式 专栏介绍专栏地址专栏介绍 适配器模式角色分析目标接口(Target)源接口(Adaptee)适配器(Adapter) 核心思想应用场景Java程序实现输出结果程序分析123 优…...
Python柱形图
柱形图 柱形图,又称长条图、柱状统计图、条图、条状图、棒形图,是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析…...
用OpenCV(Python)获取图像的SIFT特征
import cv2 as cv import numpy as np import matplotlib.pyplot as plt imgcv.imread("../Lena.png") img_graycv.cvtColor(img,cv.COLOR_BGR2GRAY)#创建一个SIFI对象 siftcv.SIFT_create()#使用SIFT对象在灰度图像img_gray中检测关键点,结果存储在变量k…...
阿里云ECS和轻量服务器有什么区别?
阿里云服务器ECS和轻量应用服务器有什么区别?轻量和ECS优缺点对比,云服务器ECS是明星级云产品,适合企业专业级的使用场景,轻量应用服务器是在ECS的基础上推出的轻量级云服务器,适合个人开发者单机应用访问量不高的网站…...
华为云云耀云服务器L实例评测|安装搭建学生成绩管理系统
1.前言概述 华为云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。多种产品规格,满足您对成本、性能及技术创新的诉求。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在…...
Audacity 使用教程:轻松录制、编辑音频
Audacity 使用教程:轻松录制、编辑音频 1. 简介 Audacity 是一款免费、开源且功能强大的音频录制和编辑软件。它适用于 Windows、Mac 和 Linux 等多种操作系统,适合音乐制作、广播后期制作以及普通用户进行音频处理。本教程将带领大家熟悉 Audacity 的…...
深入了解“注意力”和“变形金刚”-第2部分
一、说明 在上一个故事中,我已经解释了什么是注意力机制,以及与转换器相关的一些重要关键字和块,例如自我注意、查询、键和值以及多头注意力。 在这一部分中,我将解释这些注意力块如何帮助创建转换器网络,并详细讨论网…...
“债务飙升!美国一天内增加2750亿美元,金融震荡的前奏已拉开帷幕!”
2023年10月4日,美国政府向美国债务追加2750亿美元,相当于现在比特币(BTC)总市值的一半还多。 有人会说:多一点、少一点,没什么区别.....确实,当你看美国债务时,2750亿美元并没有什么意义&#x…...
最新Uniapp软件社区-全新带勋章源码
测试环境:php7.1。ng1.2,MySQL 5.6 常见问题: 配置好登录后转圈圈,检查环境及伪静态以及后台创建好应用 上传图片不了,检查php拓展fileinfo 以及public文件权限 App个人主页随机背景图,在前端uitl文件夹里面…...
基于goravel的CMS,企业官网通用golang后台管理系统
2023年9月11日10:47:00 仓库地址: https://gitee.com/open-php/zx-goravel-website 框架介绍 Goravel SCUI 后端开发组件 go 1.20 Goravel 1.13 数据库 sql(使用最新日期文件) goravel\doc\sql_bak mysql 8.0 前端开发组件 scui 1.6.9 node v14.21.3 效果图…...
(五)激光线扫描-位移台标定
线激光属于主动测量方式,但是由于线激光的特性,我们只能通过提取激光中心线获取这一条线上的高度信息,那么要进行三维重建的话,就需要通过平移或者是旋转的方式,来让线激光扫描被测物体的完整轮廓,也就是整个表面。激光线的密度越高还原出来的物体越细腻,但由于数据量大…...
媒体发稿:为什么选择国内媒体推广一文带你领略其魅
随着互联网的飞速发展,媒体推广成为企业宣传的重要方式。国内媒体推广因其独特的魅力和广泛的传播渠道,逐渐成为企业选择的首选。本文将探讨为什么选择国内媒体推广,并带您领略其魅力。 1. 国内媒体推广的广泛传播渠道 国内媒体推广拥有广泛…...
基于自私羊群优化的BP神经网络(分类应用) - 附代码
基于自私羊群优化的BP神经网络(分类应用) - 附代码 文章目录 基于自私羊群优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.自私羊群优化BP神经网络3.1 BP神经网络参数设置3.2 自私羊群算法应用 4.测试结果…...
AI绘图:GPT4技术的艺术化呈现与无限可能
了解更多点击《AI绘图:GPT4技术的艺术化呈现与无限可能》 GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。例如在科研编程、绘图领域: 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATL…...
Go Gin Gorm Casbin权限管理实现 - 1. Casbin概念介绍以及库使用
1. 核心概念 核心配置中含两部分模型配置以及策略配置,给出两个示范配置,在此基础上对实际请求进行分析。 1.1 Model 模型文件,存储了请求定义(request_definition),策略定义(policy_definition),匹配规则(matchers)&a…...
JUC第十五讲:JUC集合-ConcurrentHashMap详解(面试的重点)
JUC第十五讲:JUC集合-ConcurrentHashMap详解 本文是JUC第十五讲:JUC集合-ConcurrentHashMap详解。JDK1.7之前的ConcurrentHashMap使用分段锁机制实现,JDK1.8则使用数组链表红黑树数据结构和CAS原子操作实现ConcurrentHashMap;本文…...
【TensorFlow Hub】:有 100 个预训练模型等你用
要访问TensorFlow Hub,请单击此处 — https://www.tensorflow.org/hub 一、说明 TensorFlow Hub是一个库,用于在TensorFlow中发布,发现和使用可重用模型。它提供了一种使用预训练模型执行各种任务(如图像分类、文本分析等…...
3个AI脚本让Illustrator设计效率提升300%:从重复劳动到创意爆发
3个AI脚本让Illustrator设计效率提升300%:从重复劳动到创意爆发 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 作为设计师,你是否每天花费40%以上时间在重复…...
Chrome密码提取终极指南:ChromePass工具完整使用教程
Chrome密码提取终极指南:ChromePass工具完整使用教程 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经因为忘记某个重要网站的登录密码而感到困扰…...
从Debezium到Flink RowData:手把手解析Flink CDC 2.3如何优雅处理MySQL的UPDATE事件
从Debezium到Flink RowData:深入解析Flink CDC 2.3处理MySQL UPDATE事件的机制 在实时数据处理的领域中,变更数据捕获(CDC)技术已经成为构建数据管道的核心组件。当MySQL数据库中的一条记录被更新时,如何准确捕获这一变更并将其高效地传递到下…...
VMware虚拟机中SenseVoice-Small开发环境快速搭建
VMware虚拟机中SenseVoice-Small开发环境快速搭建 1. 引言 语音识别技术正在快速发展,而SenseVoice-Small作为一个高效的多语言语音识别模型,为开发者提供了强大的工具。但在实际开发中,我们经常需要一个隔离的环境来测试和部署模型&#x…...
RPA-Python与pytest-microsoftgraph-python-sdk集成:pytest-microsoftgraph-python-sdk测试自动化
RPA-Python与pytest-microsoftgraph-python-sdk集成:pytest-microsoftgraph-python-sdk测试自动化 【免费下载链接】RPA-Python Python package for doing RPA 项目地址: https://gitcode.com/gh_mirrors/rp/RPA-Python RPA-Python是一款强大的Python RPA工具…...
OpenRocket:开源火箭仿真平台的技术架构与实践指南
OpenRocket:开源火箭仿真平台的技术架构与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 价值定位:如何突破传统火箭设计…...
YOLOv7剪枝实战:5种高效剪枝方法对比与代码实现
YOLOv7剪枝实战:5种高效剪枝方法对比与代码实现 在目标检测领域,YOLOv7以其卓越的速度-精度平衡成为工业界宠儿。但当我们将模型部署到边缘设备或需要高吞吐量的生产环境时,原始模型的计算量和参数量往往成为瓶颈。这时,模型剪枝技…...
从漏极、栅极到源极开关:手把手教你选对单端电荷泵拓扑(基于噪声与速度权衡)
从漏极、栅极到源极开关:单端电荷泵拓扑的噪声与速度权衡实战指南 在锁相环(PLL)设计中,电荷泵的性能往往成为整个系统相位噪声和杂散特性的瓶颈。特别是当设计目标同时包含低带内相位噪声和高开关速度时,单端电荷泵的拓扑选择就变得尤为关键…...
移动端视频适配难题:xgplayer的CSS全屏模式实战指南(含16:9与9:16适配技巧)
移动端视频适配难题:xgplayer的CSS全屏模式实战指南(含16:9与9:16适配技巧) 在移动端视频播放场景中,屏幕比例适配一直是开发者面临的棘手问题。传统全屏模式在处理非常规比例视频(如竖屏9:16内容)时往往表…...
开源项目 Git 贡献全流程拆解:从入门到精通
好的,这是一篇关于开源项目 Git 贡献全流程拆解的技术文章大纲:开源项目 Git 贡献全流程拆解:从入门到精通引言开源精神与协作的重要性。Git 作为分布式版本控制系统在开源世界的核心地位。明确目标:清晰、完整地拆解向开源项目贡…...
