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

C语言基础_排序算法和二分法查找

0、排序算法_选择排序:

  • 概念:每次排序把未排序序列当中的极值找出来放到前面
// 以从大到小排序为例
#include<stdio.h>
#define SZ 5int main() {int a[SZ] = { 1,5,4,2,3 };// 选择排序(从大到小)int i, j, Max, Max_p,tem;for (i = 0; i <= ((sizeof(a) / sizeof(a[0])) - 2); i++) {Max = a[i];Max_p = i;// 找当前一轮中的最大值for (j = i + 1; j <= ((sizeof(a) / sizeof(a[0])) - 1); j++) {if (a[j] > Max) {Max_p = j;Max = a[j];}}// 替换最左边元素tem = a[i];a[i] = a[Max_p];a[Max_p] = tem;printf("第%d轮Max:%d\n", i,Max);}printf("===========");for (i = 0; i < SZ; i++) {printf("%d  ", a[i]);} // 5  4  3  2  1return 0;
}

1、排序算法_冒泡排序:

  • 概念:每次排序把未排序序列当中的极值找出来放到前面
// 以从大到小排序为例
// 冒泡排序(从大到小)
#include<stdio.h>
int main(){
int i, j,tem;
for (i = 0; i < SZ - 1; i++) {for (j = 0; j < SZ-i; j++) {if (a[j] < a[j + 1]) {tem = a[j];a[j] = a[j + 1];a[j + 1] = tem;}}
}
for (i = 0; i < SZ; i++) {printf("%d  ", a[i]);
}
return 0}

2、排序算法_插入排序:

  • 概念:每次排序把未排序序列当中的极值找出来放到前面
// 以从大到小排序为例
#include<stdio.h>
int main(){int a[SZ] = { 1,5,4,2,3 };// 插入排序(从大到小)int i,j, tem;for (i = 1; i <= SZ - 1; i++) {// 有序序列中小的值右移,直到找到大于当前数的值,插入tem = a[i];j = i;while (j>0) {if (a[j-1] < a[j]) {tem = a[j];a[j] = a[j - 1];a[j - 1] = tem;}j--;}}for (i = 0; i < SZ; i++) {printf("%d  ", a[i]);}return 0;
}

3、建立在有序序列基础之上的查找方法:二分法查找

  • 思路,设置三个变量分别指向序列的最小值,中间值和最大值,每次循环就判断要查找的数值比中间值大还是比中间值小,移动最小值和最大值的位置,每次都能排除一半留下一半。


总结:

  • 加强对算法的练习,能够提升对语言的理解。
http://www.lryc.cn/news/611636.html

相关文章:

  • GROUP BY与ORDER BY的索引优化方法
  • 脑洞大开——AI流程图如何改变思维?
  • 深入解析Java NIO在高并发场景下的性能优化实践指南
  • 企业网络安全中人工智能(AI)的影响
  • 使用MatterJs物理2D引擎实现重力和鼠标交互等功能,有点击事件(盒子堆叠效果)
  • HTML应用指南:利用GET请求获取全国OPPO官方授权体验店门店位置信息
  • nlp-词汇分析
  • easyExcel 读取有合并单元格数据
  • EasyExcel高效工具类:简化Excel导入导出,支持多Sheet与枚举转换
  • QT----QAxObject在子线程中调用,发现excel指针为空
  • Excel制作尖刀图,直观展示业绩涨跌
  • EXCEL-业绩、目标、达成、同比、环比一图呈现
  • 从“T+1”到“T+0”:基于SQL构建MES到数据仓库的数据采集通道
  • OpenGL VBO:顶点缓冲对象的深度解析
  • 点穴式优化:用DeepSeek精准识别关键节点的产品体验突破法
  • PostgreSQL报错“maximum number of prepared transactions reached”原因及高效解决方案解析
  • 推荐一款优质的开源博客与内容管理系统
  • Mac安装WebStorm
  • C++11实现线程池(2)固定线程池
  • Java Stream API 详解(Java 8+)
  • 云计算一阶段Ⅱ——12. SELinux 加固 Linux 安全
  • 8.6学习总结
  • AI增强的软件测试工具
  • 网站、域名、IP在什么场景下需要备案
  • 动态代理常用的两种方式?
  • OA系统详解:有哪些功能、主流产品怎么选?
  • 自己本地搭建的服务器怎么接公网?公网IP直连服务器方法,和只有内网IP直接映射到互联网
  • 深度解析:AI如何重塑供应链?从被动响应到预测性防御的三大核心实践
  • 希尔排序:高效插入排序的进阶之道
  • 【JS-7-ajax】AJAX技术:现代Web开发的异步通信核心