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

50、PHP 实现选择排序

题目: PHP 实现选择排序

描述:

  • n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
  • (1)初始状态:无序区为R[1…n],有序区为空。
  • (2)第1趟排序
  • 在无序区R[1…n]中选出关键字最小的记录R[k],
  • 将它与无序区的第1个记录R[1]交换,
  • 使R[1…1]和R[2…n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
    * ……
  • (3)第i趟排序
  • 第i趟排序开始时,当前有序区和无序区分别为R[1…i-1]和Ri…n。
  • 该趟排序从当前无序区中选出关键字最小的记录R[k],
  • 将它与无序区的第1个记录R[i]交换,
  • 使R[1…i]和R[i+1…n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
  • 这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
    */
function selectSort(array $list)
{$length = count($list);for($i = 0; $i < $length; $i++){$key = $i;for($j = $i + 1; $j < $length; $j++){if($list[$j] < $list[$key]){$key = $j;}}$temp = $list[$key];$list[$key] = $list[$i];$list[$i] = $temp;}return $list;
}$list = array(3, 6, 2, 4, 10, 1 ,9, 8, 5, 7);
var_dump(selectSort($list));/*** 分析:* 原数组:[ 3 ,6 ,2 ,4 ,10 ,1 ,9 ,8 ,5 ,7 ]* key:5* [ 1 ,6 ,2 ,4 ,10 ,3 ,9 ,8 ,5 ,7 ]* key:2* [ 1 ,2 ,6 ,4 ,10 ,3 ,9 ,8 ,5 ,7 ]* key:5* [ 1 ,2 ,3 ,4 ,10 ,6 ,9 ,8 ,5 ,7 ]* key:3* [ 1 ,2 ,3 ,4 ,10 ,6 ,9 ,8 ,5 ,7 ]* key:8* [ 1 ,2 ,3 ,4 ,5 ,6 ,9 ,8 ,10 ,7 ]* key:5* [ 1 ,2 ,3 ,4 ,5 ,6 ,9 ,8 ,10 ,7 ]* key:9* [ 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,10 ,9 ]* key:7* [ 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,10 ,9 ]* key:9* [ 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ]* key:9* [ 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ]*  */

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 分布式锁的三种实现方式:Redis、基于数据库和Zookeeper
  • C#:枚举及位标志周边知识详解(小白入门)
  • Kafka知识总结(选举机制+控制器+幂等性)
  • 在 Elasticsearch 中实现采集自动扩展
  • Python urllib请求https接口报错
  • python异步编程,协程
  • java中的函数式接口介绍
  • python inf是什么意思
  • Centos安装、迁移gitlab
  • 数据透视——判别分析
  • 刷新历史新高后又大跌!剖析黄金现在适合投资吗?
  • 编程的魅力、学习路径、应用领域以及对未来的影响
  • docker笔记5-数据卷
  • vue2根据选中的日期动态渲染表格的列
  • 计算机视觉技术在医疗诊断中的应用如何确保数据隐私和安全性,同时又能实现精准的病情分析?
  • Asm.js的简单介绍
  • avalon2.2的VM生成过程
  • exports和module.exports
  • Fastjson的基本使用方法大全
  • HTTP中GET与POST的区别 99%的错误认识
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • PAT A1092
  • Solarized Scheme
  • Spring核心 Bean的高级装配
  • 分类模型——Logistics Regression
  • 关于for循环的简单归纳
  • 聊聊redis的数据结构的应用
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 手机端车牌号码键盘的vue组件
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我建了一个叫Hello World的项目
  • 智能网联汽车信息安全
  • 移动端高清、多屏适配方案
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (160)时序收敛--->(10)时序收敛十
  • (19)夹钳(用于送货)
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (rabbitmq的高级特性)消息可靠性
  • (SERIES12)DM性能优化
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (实战篇)如何缓存数据
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 中创建支持集合初始化器的类型
  • .net开发引用程序集提示没有强名称的解决办法
  • .net中的Queue和Stack
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • 。Net下Windows服务程序开发疑惑
  • /bin、/sbin、/usr/bin、/usr/sbin
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [2019红帽杯]Snake