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 }

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

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

相关文章

为什么mac上有的软件删除不掉?

对于Mac用户来说&#xff0c;软件卸载通常是一个相对简单的过程。然而&#xff0c;有时你可能会发现某些软件似乎“顽固不化”&#xff0c;即使按照常规方式尝试卸载&#xff0c;也依然存在于你的电脑上。这到底是为什么呢&#xff1f;本文将探讨这一问题的可能原因。 1.卸载失…

C#制做一个 winform下的表情选择窗口

能力有限&#xff0c;别人可能都是通过其他方式实现的&#xff0c;我这里简单粗暴一些&#xff0c;直接通过点击按钮后弹出个新窗体来实现。 1、先在form1上增加一个toolstrip控件&#xff0c;再增加个toolstripbutton按钮&#xff0c;用来点击后弹出新窗体&#xff0c;如图&a…

【uniapp】小程序开发5:获取openid、获取手机号

一、获取小程序openid 需要配合后端接口获取授权码&#xff08;code&#xff09; 1&#xff09;调用uni.login()方法获取授权code&#xff0c;并把code传给getOpenid //使用uni.login的时候可以在任何接口下使用即可&#xff0c;主要看打印出来的code值和openid let that t…

智能井盖传感器:城市安全卫士

随着城市人口的不断增加和城市基础设施的不断发展&#xff0c;井盖作为城市道路和排水系统的重要组成部分&#xff0c;承担着确保城市安全和便利性的关键角色。然而&#xff0c;井盖在日常使用中常常面临倾斜、水浸和翻转等问题&#xff0c;这些问题可能导致交通阻塞、行人坠井…

小谈设计模式(20)—组合模式

小谈设计模式&#xff08;20&#xff09;—组合模式 专栏介绍专栏地址专栏介绍 组合模式对象类型叶节点组合节点 核心思想应用场景123 结构图结构图分析 Java语言实现首先&#xff0c;我们需要定义一个抽象的组件类 Component&#xff0c;它包含了组合节点和叶节点的公共操作&a…

Windows配置ADB工具

一、目的 在进行嵌入式开发时&#xff0c;我们经常使用ADB工具登录到开发板上进行命令操作&#xff0c;本篇我们介绍如何在windows平台配置ADB环境。 二、实战 1.下载adb工具包​​​​​​​https://developer.android.com/studio/releases/platform-tools?hlzh-cnhttps://d…

任务工单发送失败重试方案设计

需求背景&#xff1a; 该系统为一个工单系统&#xff0c;其中任务工单为该系统中的一个模块&#xff1b;任务工单它是需要周期性调度的一种任务类型&#xff1b;可以按照用户配置的时间周期定时性触发的。由于任务需要发送到对应的工作人员上&#xff0c;所以这里需要先对员工进…

DM宣传单制作,利用在线模板,快速替换文字

如果你需要制作一批宣传单&#xff0c;但是时间很紧&#xff0c;而且没有专业的设计人员协助&#xff0c;那么你可以选择使用在线模板来快速制作宣传单。本文将介绍如何使用乔拓云平台&#xff0c;快速制作宣传单的方法。 步骤一&#xff1a;选择适合的在线制作工具 首先&…

Leetcode hot 100之前缀和、差分数组、位运算

目录 差分数组-区间增减 和为K的子数组&#xff1a;前缀和 哈希表优化 除自身以外数组的乘积&#xff1a;前后缀区间 位运算 异或&#xff1a;同为0&#xff0c;不同为1 136. 只出现一次的数字&#xff1a;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现2次…

【Unity3D编辑器开发】Unity3D编辑器开发基础性框架结构【全面总结】

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 嗨&#xff0c;大家好&#xff0c;我是恬静的小魔龙。 同学们…

ViewPager 异常状态之 无法切换、循环切换

网上关于 ViewPager 的用法、源码解析已经讲的很多了。但生产环境中&#xff0c;我们可能会遇到各种奇怪的问题。这篇文章将会聊聊自己遇到的比较奇怪的异常情况&#xff0c;并讲述分析思路与源码解析。 循环切换 viewpager 异常 从视频中可以看到&#xff0c;当切换到 4 的时…

Spring MVC 中的国际化和本地化

Spring MVC 中的国际化和本地化 国际化&#xff08;Internationalization&#xff0c;简称i18n&#xff09;和本地化&#xff08;Localization&#xff0c;简称l10n&#xff09;是构建多语言应用程序的重要概念。Spring MVC提供了丰富的支持&#xff0c;使开发人员能够轻松地处…

Spark基础

一、spark基础 1、为什么使用Spark Ⅰ、MapReduce编程模型的局限性 (1) 繁杂 只有Map和Reduce两个操作&#xff0c;复杂的逻辑需要大量的样板代码 (2) 处理效率低 Map中间结果写磁盘&#xff0c;Reduce写HDFS&#xff0c;多个Map通过HDFS交换数据 任务调度与启动开销大 (…

前后端通信到底是怎样一个过程

前后端通信是怎样 前言&#xff1a;Http协议 超文本传输协议 规定&#xff1a;每一次前后端通信&#xff0c;前端需要主动向后端发出请求&#xff0c;后端接收到前端的请求后&#xff0c;可以给出响应 1、Http报文 浏览器向服务器发送请求时&#xff0c;请求本身就是信息&…

【gcc】RtpTransportControllerSend学习笔记 1

本文是woder大神 的文章的学习笔记。主要是大神文章: webrtc源码分析(8)-拥塞控制(上)-码率预估 的学习笔记。大神的webrtc源码分析(8)-拥塞控制(上)-码率预估 详尽而具体,堪称神作。因为直接看大神的文章,自己啥也没记住,所以同时跟着看代码。跟着大神走一遍,不求甚解,…

踩坑日记 uniapp 底部 tabber遮挡住购物车结算

tabbar 被购物车结算遮挡 在小程序上tabbar没有将固定栏遮挡&#xff0c;如果直接调高&#xff0c;浏览器H5页面是对了&#xff0c;但在小程序上面离底部的定位就太高了 原代码 // 底部结算样式.shop-foot {border-top: 2rpx solid #F7F7F7;background-color: #FFF;position: …

【JavaScript】内存管理和垃圾回收机制

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口&#xff0c;比如 malloc()和free()。而 JavaScript 是在创建变量&#xff08;对象&#xff0c;字符串等&#xff09;时自动进行了分配内存&#xff0c;并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

leetcode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…

机器学习 不均衡数据采样方法:imblearn 库的使用

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

【Java接口性能优化】skywalking使用

skywalking使用 提示&#xff1a;微服务中-skywalking使用 文章目录 skywalking使用一、进入skywalking主页二、进入具体服务1.查看接口 一、进入skywalking主页 二、进入具体服务 可以点击列表或搜索后&#xff0c;点击进入具体服务 依次选择日期、小时、分钟 1.查看接口 依次…