php四排序-选择排序
原理: 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(以下都是升序排列,即从小到大排列)
举例说明: $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个位置,最后一个位置也就确定了。代码如下:
<?php
function order($arr){
//定义中间变量
$temp = 0;
$count = count($arr);
for($i=0; $i<$count-1; $i++){
//定义最小位置
$minIndex = $i;
for($j= $i+1; $j<$count; $j++){
if($arr[$j] < $arr[$minIndex]){
$minIndex = $j;
}
}
if($i != $minIndex){
$temp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
}
}
return $arr;
}
$arr = array(6, 3, 8, 2, 9, 1);
$res = order($arr);
var_dump($res );
php四排序-选择排序的更多相关文章
- 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)
跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...
- java实现几种常用排序:选择排序
一.选择排序介绍 选择排序,顾名思义就是用逐个选择的方式来进行排序,逐个选择出数组中的最大(或最小)的元素,直到选择至最后一个元素.此时数组完成了排序. 二.选择排序原理分析 三.选择排序代码实现 / ...
- 排序--选择排序Selection Sort Java实现
基本原理 选择排序的简单原理:选择排序算法通过从未排序部分重复查找最小元素(考虑升序)并将其放在开头来对数组进行排序. 将数组两个子数组: 已排序子数组 未排序子数组 选择排序中每次循环都会从未排序子 ...
- JAVA排序--[选择排序]
package com.array; public class Sort_Select { /** * 项目名称:选择排序 ; * 项目要求:用JAVA对数组进行排序,并运用选择排序算法; * 作者: ...
- 排序 选择排序&&堆排序
选择排序&&堆排序 1.选择排序: 介绍:选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始 ...
- C-冒泡排序,选择排序,数组
——构造类型 ->数组 ->一维数组 ->相同类型的一组数据 ->类型修饰符--数组名—[数组的元素个数(必须是整型表达式或者是整型常量,不能是变 ...
- java实现 排序算法(鸡尾酒排序&选择排序&插入排序&二分插入排序)
1.鸡尾酒排序算法 源程序代码: package com.SuanFa; public class Cocktial { public static void main(String[] arg ...
- 内部排序->选择排序->堆排序
文字描述 堆排序中,待排序数据同样可以用完全二叉树表示, 完全二叉树的所有非终端结点的值均不大于(或小于)其左.右孩子结点的值.由此,若序列{k1, k2, …, kn}是堆,则堆顶元素(或完全二叉树 ...
- 内部排序->选择排序->树形选择排序
文字描述 树形选择排序又称锦标赛排序; 比如,在8个运动员中决出前3名至多需要11场比赛, 而不是7+6+5=18场比赛(它的前提是甲胜乙,乙胜丙,则甲必能胜丙) 首先对n个记录的关键字进行两两比较, ...
- 内部排序->选择排序->简单选择排序
文字描述 简单排序的基本思想是:每一趟在n-i+1(i=1,2,…,n)个记录中选取关键字最小的记录作为有序列表中的第i个记录. 示意图 略 算法分析 简单排序算法中,所需进行记录移动的操作次数较少, ...
随机推荐
- 2.3.3 Button(按钮)与ImageButton(图像按钮)
本节引言: 今天给大家介绍的Android基本控件中的两个按钮控件, Button普通按钮 ImageButton图像按钮: 其实ImageButton和Button的用法基本类似,至于与图片相关的则 ...
- JS日历控件优化(增加时分秒)
JS日历控件优化 在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时只支持 年月日 的日历控件,现在优化如下: 1. 在原基础上 支持 yyyy ...
- HDU1166
https://vjudge.net/contest/66989#problem/A C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直 ...
- P1312 Mayan游戏
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...
- DB2编目配置及管理
打开命令:db2cmd 我一般打开的方式如下: (在db2) ...
- python_basic
开始学习python ,欢迎一起进步.
- controlfile作为RMAN的repository时,对 keep time 的测试
4月2日,首先查看系统状况: SQL> show parameter control NAME TYPE VALUE ...
- CF708D Incorrect Flow
CF708D Incorrect Flow 有源汇上下界最小费用可行流.(= =) 对每条给定的边连边: 首先\(f_i\)是给定的,所以要有一条这个边而且要流满,先\(a_i-b_i\)连一条上下界 ...
- cocos2d-x学习记录3——CCTouch触摸响应
游戏不同于影音,强交互性是其一大特色,在游戏中主要体现为接受用户的输入并响应.智能手机触摸是其重要的输入方式. 在cocos2d-x中,触摸分为单点触摸和多点触摸. 单点触摸:主要继承CCTarget ...
- libgdx学习记录7——Ui
libgdx中的UI设计主要通过其对应的Style类进行实现,也可以通过skin实现.如果没有编辑好的skin文件,可以创建一个默认的skin,再添加已经设计好的style类即可,然后在需要使用的地方 ...