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

C语言中数组的各种排序

数组排序

冒泡排序
思路解析
  1. 相邻的元素两两比较,大的放右边,小的放左边(从大到小则反之)

  2. 第一轮比较完毕之后,最大(小)值就已经确定,第二轮可以少循环一次,后面以此类推

  3. 如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以

代码案例
#include<stdio.h>
int main()
{int arr[] = {9,7,6,4,2,3,1,5,8};int length = sizeof(arr) / sizeof(arr[0]);int i,j,num;//外循环,要进行多少轮排序,有多少元素,就要进行多少轮for(j=0;j<length;j++)           {//内循环,将元素两两比较,然后按需交换位置,//i<length-1-j//length是数组中的元素个数,//-1是因为两两比较,n个数只需要对比n-1次就可以确定最大(小)值,同时也避免因为下面的i+1导致代码错误//-j是优化代码效率,每进行一轮对比,就确定了一个元素的位置,所以下一次循环就可以少对比一个for(i=0;i<length-1-j;i++)   {//比较两个相邻元素的大小if(arr[i] > arr[i+1]){num = arr[i];   //num保存当前arr[i]的值arr[i] = arr[i+1];      //将arr[i+1]的值赋给arr[i]arr[i+1] = num;     //将保存的arr[i]的值赋给arr[i+1]}}}for(i=0;i<length;i++)       //遍历数组{printf("%d",arr[i]);}return 0;
}
选择排序
思路解析

从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较小的放前面,大的放后面,以此类推

代码案例
#include<stdio.h>
int main()
{int arr[] = {3,5,2,1,4};int length = sizeof(arr) / sizeof(arr[0]);int i,j,num;//外循环,j就是当前拿出的索引for(j=0;j<length;j++)           {//内循环,当前索引对应的元素依次与后面的元素进行比较,循环长度-1次//i就是j后面每一个索引for(i=j+1;i<length-1;i++){if(arr[j] > arr[i]){num = arr[j];arr[j] = arr[i];arr[i] = num;}}}for(i=0;i<length;i++){printf("%d",arr[i]);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构与算法 - 链表
  • 项目实战_表白墙(简易版)
  • mysql忘记root密码 解决办法
  • 如何通过前端表格控件实现自动化报表?
  • 教育教学质量评测系统开发之软件技术分析
  • ConversationChain记忆功能案例演示
  • win10桌面任务栏美化(不用软件)(任务栏应用居中,透明任务栏)
  • 科普文:分布式数据一致性协议Paxos
  • 游戏开发规范
  • 如何通过阿里云服务器部署hexo博客(超详细)
  • 如何通过Facebook的API获取用户信息:电商营销方向详解
  • 江森自控引入电子签,“碳”索智能建筑数字未来
  • 系统架构师(每日一练12)
  • 前端开发不得不知道的那些事
  • python中的进程
  • 网络传输文件的问题
  • 分享的文章《人生如棋》
  • 「译」Node.js Streams 基础
  • Bytom交易说明(账户管理模式)
  • cookie和session
  • Cumulo 的 ClojureScript 模块已经成型
  • eclipse(luna)创建web工程
  • ES学习笔记(12)--Symbol
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • MobX
  • MQ框架的比较
  • Python进阶细节
  • 浮现式设计
  • 记一次删除Git记录中的大文件的过程
  • 简单易用的leetcode开发测试工具(npm)
  • 今年的LC3大会没了?
  • 蓝海存储开关机注意事项总结
  • 前端面试总结(at, md)
  • 少走弯路,给Java 1~5 年程序员的建议
  • 网页视频流m3u8/ts视频下载
  • elasticsearch-head插件安装
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (4)事件处理——(7)简单事件(Simple events)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ***通过什么方式***网吧
  • .Net 6.0--通用帮助类--FileHelper
  • .NET gRPC 和RESTful简单对比
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @Autowired和@Resource装配
  • @EnableWebSecurity 注解的用途及适用场景
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...