用php实现选择排序的解决方法
1,定义:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
<?php
//选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
function selectSort(&$arr){
//定义进行交换的变量
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
//假设$i就是最小值
$valmin=$arr[$i];
//记录最小值的下标
$minkey=$i;
for($j=$i+1;$j<count($arr);$j++){
//最小值大于后面的数就进行交换
if($valmin>$arr[$j]){
$valmin=$arr[$j];
$minkey=$j;
}
}
//进行交换
$temp=$arr[$i];
$arr[$i]=$arr[$minkey];
$arr[$minkey]=$temp;
}
}
$arr=array(7,5,0,4,-1);
selectSort($arr);
print_r($arr);
?>
相关推荐
-
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
复制代码 代码如下: <?php /** * 简单选择排序 simple selection sort * * 原理: 一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数. */ function sort_simple_selection($list) { $len = count($list); if(empty($
-
php堆排序实现原理与应用方法
本文实例讲述了php堆排序实现原理与应用方法.分享给大家供大家参考.具体分析如下: 这里以php作为描述语言较详细讲解堆排序原理,因保证程序可读性,故不做优化,php程序中关于堆的一些概念如下: 假设n为当前数组的key则,n的父节点为 n>>1 或者 n/2(整除);n的左子节点l= n<<1 或 l=n*2,n的右子节点r=(n<<1)+1 或 r=l+1 $arr=array(1,8,7,2,3,4,6,5,9); 数组$arr的原形态结构如下: 1
-
PHP简单选择排序算法实例
简单的选择排序算法:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换 复制代码 代码如下: <?php class Sort{ /** * 简单的选择排序 * * @param unknown_type $arr */ public function selectSort(&$arr) {
-
浅谈php冒泡排序
PHP实现的代码先奉上: 复制代码 代码如下: function bubble_sort($array) { for ($i = 0; $i < count($array) - 1; $i++) { //$i为已经排过序的元素个数 for ($j = 0; $j < count($array) - 1 - $i; $j++) { //$j为需要排序的元素个数,用总长减去$i if ($array[$j] > $array[$j
-
php插入排序法实现数组排序实例
本文实例讲述了php插入排序法实现数组排序的方法.分享给大家供大家参考.具体分析如下: 插入排序法的基本思路:同样以案例来说明,还是以$arr = array(2,6,3,9),由大到小排序. 实现原理:假设(并不实际创建)有一个有序数组$arr = array(2),用$arr[1]=6来与它进行比较,如果6>2,由把$arr[0]后移到$arr[1]位置,而6插入到$arr[0]位置.接着,$arr[2]=3与$arr[1]=2比较,3>2,则$arr[1]=2继续后移到$arr[2]位置
-
PHP两种快速排序算法实例
虽然在PHP这样的web应用开发中,我们不是太强调排序的重要性,因为PHP自身已经带了例如sort()等这样强大的排序函数,但是在一些重要的场合,例如某些高并发的场合,我想排序算法的影响已经不能忽略.所以在此介绍递归排序和迭代排序. 递归法: /** * 递归法实现的快速排序 */ function quicksort($seq) { $k = $seq[0]; $x = array(); $y = array(); for($i=1; $i< $_size; $i++) { if($seq[$
-
php选择排序法实现数组排序实例分析
本文实例分析了php选择排序法实现数组排序的方法.分享给大家供大家参考.具体分析如下: 选择排序法的基本思路:直接用案例来说明吧,比如有一个数组$arr = array(2,6,3,9),从大到小排序. 第一次大循环:它首先假设$arr[0]为最大值,然后分别跟$arr[1]~$arr[3]进行比较,如果比较它大,则进行交换,过程是这样(2,6,3,9)---2和6比 --->(6,2,3,9)---6和3比--->(6,2,3,9)---6和9比--->(9,2,3,6).注意,这里下
-
php实现按照权重随机排序数据的方法
本文实例讲述了php实现按照权重随机排序数据的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: <?php /** * @param array $weight 权重 例如array('a'=>10,'b'=>20,'c'=>50) * @return string key 键名 */ function roll($weight = array()) { $roll = rand ( 1, array_sum ( $weight
-
用php实现选择排序的解决方法
1,定义:选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 参考代码: 复制代码 代码如下: <?php //选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中
-
Eclipse添加新server时无法选择Tomcat7的解决方法
在Eclipse中创建了一个Web工程后,需要将该工程部署到Tomcat中进行发布.有时就会遇到在New Server对话框中选择了Tomcat 6/7后却无法单击"Next"按钮的问题,如下图所示: 这时打开工程目录下的.metadata\.plugins\org.eclipse.core.runtime\.settings文件夹, 删除 org.eclipse.wst.server.core.prefs 和 org.eclipse.jst.server.tomcat.co
-
golang对自定义类型进行排序的解决方法
前言 Go 语言支持我们自定义类型,我们大家在实际项目中,常常需要根据一个结构体类型的某个字段进行排序.之前遇到这个问题不知道如何解决,后来在网上搜索了相关问题,找到了一些好的解决方案,此处参考下,做个总结吧. 由于 golang 的 sort 包本身就提供了相应的功能, 我们就没必要重复的造个轮子了,来看看如何利用 sort 包来实现吧. sort包浅谈 golang中也实现了排序算法的包sort包,sort 包 在内部实现了四种基本的排序算法:插入排序(insertionSort).归并排序
-
sqlServer使用ROW_NUMBER时不排序的解决方法
设置sqlServer使用ROW_NUMBER时不排序 --1.看到NHibernate是这样写的分页,感觉写起来比较容易理解(应该不会有效率问题吧?) --with只是定一个别名? [sql] with query as (select ROW_NUMBER() over(order by (select 0)) AS ROWNUM, * FROM Product) select * from query where ROWNUM BETWEEN 5 AND 10 --2.ROW_NUMBER
-
VC++实现选择排序算法简单示例
本文以一个非常简单的实例说明VC++选择排序算法的实现方法,对n个记录进行n-1趟简单选择排序,在无序区中选取最小记录. 具体实现代码如下: #include<iostream> using namespace std; //简单选择排序 void SelectSort(int r[ ], int n) { int i; int j; int index; int temp; for (i=0; i<n-1; i++) //对n个记录进行n-1趟简单选择排序 { index=i; for
-
电脑硬件资源的冲突与解决方法
硬件资源冲突的典型表现:当你添加新硬件时或添加新硬件后系统经常无缘无故地死机.黑屏:启动时,无故进入安全模式:声卡和鼠标不能正常工作或彻底罢工:按住"Alt"键,用鼠标双击我的电脑图标查看系统属性时,有惊叹号出现:打印机和软驱工作不正常.当然,也不能排除计算机病毒作怪,因为有些病毒发作时也会出现类似的现象,所以不能一概而论. 硬件冲突的主要原因:添加新硬件时,你新添加的硬件占用了原有设备的IRQ中断.DMA通道.I/O地址等计算机资源,在新旧硬件之间发生了资源冲突.这将导致一或多个硬件
-
eclipse部署tomcat服务器无法启动问题的解决方法
解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题,我相信我的方法已经能帮90%的人解决了! 当你用Eclipse运行web项目的时候,你就会看到控制台出现: WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:firstProject
-
Layui动态生成select下拉选择框不显示的解决方法
给代码添加如下部分: layui.use('form', function(){ //此段代码必不可少 var form = layui.form; form.render(); }); 实现效果: HTML代码: <div class="layui-form-item"> <label class="layui-form-label">执行周期</label> <div class="layui-input-in
-
Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法
本文实例讲述了Go语言实现冒泡排序.选择排序.快速排序及插入排序的方法.分享给大家供大家参考.具体分析如下: 算法是程序的灵魂,而排序算法则是一种最基本的算法.排序算法有许多种,这里介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例. 一.冒泡排序 冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,则交换这两个数.经过第一次遍历之后,最大的数就在最右侧了:第二次遍历之后,第二大的数就在右数第二个位置了:以此类推. 复制代码 代码如下:
-
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
最近在一个ASP.NET MVC5项目中使用Bootstrap的模态窗(弹出层)来让用户填写内容,其中的一个编辑框提供了自动完成功能,用jQuery UI Autocomplete来实现. 因为我是WEB前端小白,遇到一个问题很久也没解决掉,所以特简单记录一下,供以后查阅. 问题:不使用模态窗的时候,autocomplete可以很好的工作,使用模态窗时弹出的选择菜单会被模态窗遮挡. 解决过程: 首先查到的解决办法是在*autocomplete.css中找到.ui-autocomplete伪类,添
随机推荐
- Oracle中游标Cursor基本用法详解
- python实现提取百度搜索结果的方法
- db2 导入导出单个表的操作详解
- JQuery 学习笔记 element属性控制
- Jdbc的步骤以及简单实现代码
- 在Python中使用dict和set方法的教程
- javascript增加干扰数据实现简单加密效果
- Android编程实现3D旋转效果实例
- mysql 5.7.16 winx64安装配置方法图文教程
- js 提取class相同的节点集合
- SqlServer触发器详解
- 原创jQuery弹出层插件分享
- 详细解读JAVA多线程实现的三种方式
- 配置FTP传输记录情况的Linux FTP服务器
- 关于进程mDNSResponder.exe 总访问网络 附删除方法
- Java利用自定义注解、反射实现简单BaseDao实例
- Android 获取屏幕的多种宽高信息的示例代码
- Kotlin基础教程之控制流(顺序,分支,循环)
- 简介Java的Spring框架的体系结构以及安装配置
- 这段js代码得节约你多少时间