二、选择排序

  原理: 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(以下都是升序排列,即从小到大排列)

  举例说明: $arr = array(6, 3, 8, 2, 9, 1);

  第一轮:

  第一次比较, 第一个数 6 与(3, 8, 2, 9, 1)中 3 比较,6大,当前最小数为3,位置为 1

   第二次比较, 最小数字 3 与(3, 8, 2, 9, 1)中 8 比较,3小,当前最小数为3,位置为 1

   第三次比较, 最小数字 3 与(3, 8, 2, 9, 1)中 2 比较,3大,当前最小数为2,位置为 3

   第四次比较, 最小数字 2 与(3, 8, 2, 9, 1)中 9 比较,2小,当前最小数为2,位置为 3

   第五次比较, 最小数字 2 与(3, 8, 2, 9, 1)中 1 比较,2大,当前最小数为1,位置为 5

   第一轮比较完成后,确定最小数为1,小于第一个数6,交换位置上的数,交换后结果为 1 3 8 2 9 6

   总结:第一轮比较,可以确定第一个位置的最小值。

  第二轮:

   第一次比较, 3与(8, 2, 9, 6)中 8 比较,3小,当前最小数为3,位置为 1

   第二次比较, 3与(8, 2, 9, 6)中 2 比较,3大,当前最小数为2,位置为 3

   第三次比较, 2与(8, 2, 9, 6)中 9 比较,2小,当前最小数为2,位置为 3

   第四次比较, 2与(8, 2, 9, 6)中 6 比较,2小,当前最小数为2,位置为 3

   第二轮比较完成后,确定最小数为2,小于第二个数3,交换位置上的数,交换后结果为 1 2 8 3 9 6

  总结:第二轮比较,可以确定第二个位置的最小值。至此确定了前两个位置上的数。

  第三轮:

   第一次比较, 8与( 3, 9, 6)中 3 比较,8大,当前最小数为3,位置为3

    第二次比较, 3与( 3, 9, 6)中 9 比较,3小,当前最小数为3,位置为3

   第三次比较, 6与( 3, 9, 6)中 6 比较,3小,当前最小数为3,位置为3

    第三轮比较完成后,确定最小数为3,小于第三个数8,交换位置上的数,交换后结果为 1 2 3 8 9 6

  总结:第三轮比较,可以确定第三个位置的最小值。至此确定了前三个位置上的数。

 第四轮:

   第一次比较, 8与( 9, 6)中 9 比较,8小,当前最小数为8,位置为3

   第二次比较, 8与( 9, 6)中 6 比较,8大,当前最小数为6,位置为5

   第四轮比较完成后,确定最小数为6,小于第四个数8交换位置上的数,交换后结果为 1 2 3 6 9 8

  总结:第四轮比较,可以确定第四个个位置的最小值。至此确定了前四个位置上的数。

第五轮:

   第一次比较, 9与 8 比较,9大,当前最小数为8,位置为5

    第五轮比较完成后,确定最小数为8,小于第五个数9,交换位置上的数,交换后结果为 1  2  3  6  8  9

  总结:第五轮比较,可以确定第五个个位置的最小值。至此确定了前5个位置上的数。

综合以上五轮比较,每一轮比较都可以确定一个位置,对于N个数,比较N-1轮可以确定N个位置上的数,因为确定了N-1个位置,最后一个位置也就确定了。

示例代码:
选择排序 实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数
for ($i=0; $i < count($arr)-1; $i++) { //$i 当前最小值的位置, 需要参与比较的元素

$p = $i;//先假设最小的值的位置for ($j=$i+1; $j < count($arr); $j++) { //$j 当前都需要和哪些元素比较,$i 后边的。if($arr[$p] > $arr[$j]){$p = $j;}
}if($p != $i)
{$tmp = $arr[$p];$arr[$p] = $arr[$i];$arr[$i] = $tmp;
}

}
var_dump($arr);

PHP排序算法之选择排序相关推荐

  1. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  2. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  3. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  4. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  5. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  6. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

  7. Java经典排序算法:选择排序,动图演示排序过程

    Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...

  8. 【排序算法】选择排序(C语言)

    [排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ​ ...

  9. 选择排序算法流程图_常用排序算法之选择排序

    前两天给大家分享了冒泡排序和插入排序(没关注的同学,可以关注后查看历史消息),今天继续给大家分享另一种常用的排序算法--选择排序. 选择排序 选择排序和插入排序很相似,也区分已排序区间和未排序区间,选 ...

  10. 排序算法之选择排序(简单选择排序、堆排序)

    选择排序(简单选择排序.堆排序) 选择排序 简单选择排序 概念 算法实现 堆排序 概念 算法实现 后续 选择排序 选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列 ...

最新文章

  1. 罹患各种癌晚期,无法救治
  2. 9.5 程序示例--推荐系统-机器学习笔记-斯坦福吴恩达教授
  3. Android 5.1 SystemServer SystemService 各个系统Manager
  4. elemnt的Table 表格使用注意事项
  5. cas客户端登陆状态不同步_Java并发——同步组件
  6. 只要是[运算] 就会提升数据类型
  7. 解决Win7下JMF读取摄像头错误
  8. 手机手写签名 php,jSignature手写签名
  9. python爬取京东商品数据要先登录_Python爬虫的起点
  10. 5W2H 分析法
  11. OJ每日一练——乘方计算
  12. RxHttp 完美适配Android 10/11 上传/下载/进度监听
  13. 阿里云国际版服务器如何搭建区块链应用程序
  14. python枚举是什么意思_什么是枚举python
  15. 解决TIM版无法修改个人文件夹位置
  16. Java中你最擅长什么_你最擅长的领域是什么
  17. read函数的 用法
  18. linux系统运维基础
  19. 完全解读:用最小二乘法求模型参数
  20. 正则表达式re之模块函数和编译标志

热门文章

  1. TuRBO(2019NIPS)—贝叶斯优化的应用
  2. 汽车转向液压油箱模具设计
  3. 【Java进阶营】膜拜 13万字 腾讯高工手写JDK源码笔记带你飙向实战
  4. 企业级应用中间件管理与维护实战培训(WebLogic、WebSphere、Tomcat)
  5. mysql tinyint对应java什么类型_MySQL数据类型与Java数据类型
  6. kotlin定义方法和调用
  7. 有效解决windows10系统 shift+右键 没有打开命令窗口选项的问题
  8. 天梯模拟--约瑟夫问题(7-18 猴子选大王 (20 分))
  9. 恐惧症的根源一认知错误
  10. Django学习4:URL传参