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

【C语言】选择排序

基本原理
先找到数组中最大的那个数,将最大的数放到数组最右端(交换a[maxid]和a[len-1]这两个数的位置),然后继续从a[0]到a[len-2]中找到最大的数,然后交换a[maxid]和a[len-2]位置,依次查找交换,直到比较完a[0]和a[1]的大小结束,然后输出排序后的数组

代码一(定义max函数)

#include<stdio.h>
int max(int a[],int len)
{int maxid = 0;for(int i=1; i<len; i++){if(a[i] > a[maxid]){maxid = i;}}return maxid;//找到最大数在数组中的下标 
}int main()
{int a[] = {2,45,6,12,87,34,90,24,23,11,65};int len = sizeof(a)/sizeof(a[0]);//求数组长度 int i = len - 1;for(i; i>0; i--)//此处 "i>0;"最后循环到i=1时,数组长度为2,此时只需比较a[0]和a[1]的大小即可 {int maxid = max(a,i+1);int t = a[maxid];a[maxid] = a[i];a[i] = t;//将最大数与每次循环最右端的数交换位置 
//		printf("%d\n",maxid); 	//输出最大值得下标 }for( int i=0; i<len; i++){printf("%d ",a[i]);//输出排序后的数组 }return 0;
}

代码二

#include<stdio.h>
int main()
{int a[] = {2,45,6,12,87,34,90,24,23,11,65};int len = sizeof(a)/sizeof(a[0]);//求数组长度 		int i = len - 1;for(i; i>0; i--)//此处 "i>0;"最后循环到i=1时,数组长度为2,此时只需比较a[0]和a[1]的大小即可 {int maxid = 0;for(int j=1; j<=i; j++){if(a[j] > a[maxid]){maxid = j;}}int t = a[maxid];a[maxid] = a[i];a[i] = t;//将最大数与每次循环最右端的数交换位置 }for( int i=0; i<len; i++){printf("%d ",a[i]);//输出排序后的数组 }return 0;
}

运行结果
在这里插入图片描述

http://www.lryc.cn/news/133347.html

相关文章:

  • 异步更新队列 - Vue2 响应式
  • 【Unity的URP渲染管线下实现扩展后处理Volume组件_TemporalAntiAliasing(TAA)_抗锯齿(附带下载链接)】
  • NineData通过AWS FTR认证,打造安全可靠的数据管理平台
  • Qt应用开发(基础篇)——滚屏区域类 QScrollArea
  • 安装最新版chromedriver 116,亲测可用
  • html题库
  • Android11 中 LED 使用-RK3568
  • BC77 有序序列插入一个数
  • 通过脚本使用Cppcheck做静态测试并生成报告(Windows)
  • 工业安全生产信息化平台的基本架构和关键功能分享
  • 每日一道面试题之session 和 cookie 有什么区别?
  • SHELL 基础 显示字符颜色, 修改历史命令,Linux里的命令 执行顺序
  • Vue 和 JQuery 的区别在哪?为什么 JQuery 会被 Vue 取代?
  • Spring 中 Bean 注入与获取
  • STM32 中断复习
  • Django的模型
  • 非计算机科班如何丝滑转码
  • PyTorch深度学习实战(12)——数据增强
  • SpringCloud Ribbon中的7种负载均衡策略
  • 04 qt功能类、对话框类和文件操作
  • 安装软件包
  • 玩转单元测试之gmock
  • POI与EasyExcel--写Excel
  • 7. CSS(四)
  • uni-app 集成推送
  • Spring Boot+Redis 实现消息队列实践示例
  • 11. 实现业务功能--获取用户信息
  • HTTPS
  • spring详解
  • 香港服务器备案会通过吗?