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($len)) return $list;
for($i = 0;$i < $len; $i++)
{
$min = $i;
for($j = $i + 1; $j < $len; $j++)
{
//if($list[$j] > $list[$min]) // 从大到小
if($list[$j] < $list[$min]) // 从小到大
{
$min = $j;
}
echo implode(',',$list)."#pos=".($min + 1)." min=".$list[$min]."<br/>";
}
if($min != $i)
{
$temp = $list[$i];
$list[$i] = $list[$min];
$list[$min] = $temp;
}
echo "-------------------------<br/>";
}
}
$list = array(4,3,2,1,5,7,3,7);
$list = sort_simple_selection($list);
相关推荐
-
php数据结构与算法(PHP描述) 快速排序 quick sort
复制代码 代码如下: <?php /** * 快速排序 quick sort * **/ function sort_quick($arrData) { if(empty($arrData) || !is_array($arrData)) return false; $flag = $arrData[0]; $len = count($arrData) - 1; if($len == 0) return $arrData; // 如果只有一个数据的数组直接返回 $arrLeft = array(
-
浅谈PHP链表数据结构(单链表)
链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区) 规定:基本数据类型,一般放在栈区 复合数据类型,比如对象,放在堆区 定义一个类Hero 定义成员属性排名 $no 定义成员属性姓名 $name 定义成员属性昵称 $nickname 定义成员属性 $next,是一个引用,指向下一个Hero对象 定义构造函数,传递参数:
-
php array_pop()数组函数将数组最后一个单元弹出(出栈)
复制代码 代码如下: <?php /*函数array_pop():将数组最后一个单元弹出(出栈) * 1.语法:mixed array_pop ( array &array ) * 2.描述: 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一.如果 array 为空(或者不是数组)将返回 NULL. * 3.注意事项: * 3.1. */ echo "****************************************************
-
PHP常用算法和数据结构示例(必看篇)
实例如下: </pre><pre name="code" class="php"><?php /** * Created by PhpStorm. * User: qishou * Date: 15-8-2 * Time: 上午9:12 */ header("content-type:text/html;charset=utf-8"); $arr = array(3,5,8,4,9,6,1,7,2); echo im
-
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
array_push() 定义和用法 array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 该函数等于多次调用 $array[] = $value. 语法 array_push(array,value1,value2...)参数 描述 array 必需.规定一个数组. value1 必需.规定要添加的值. value2 可选.规定要添加的值. 提示和注释 注释:即使数组中有字符串键名,您添加的元素也始终是数字键.(参见例子 2) 注释:如果用 a
-
php数据结构与算法(PHP描述) 查找与二分法查找
复制代码 代码如下: <?php /** * 查找 * **/ // 顺序查找 function normal_search($arrData,$val) { $len = count($arrData); if($len == 0) return -1; for($i = 0;$i < $len; $i++ ) { echo "find No.",$i + 1," value = ",$arrData[$i]," is = ",$v
-
关于PHP堆栈与列队的学习
在PHP中数组常被当作堆栈(后进先出:LIFO)与队列(先进先出:FIFO)结构来使用.PHP提供了一组函数可以用于push与pop(堆栈)还有shift与unshift(队列)来操作数组元素.堆栈与列队在实践中应用非常广泛.我们可以先看下堆栈: 复制代码 代码如下: <?php $arr = array(); array_push($arr,'aaa'); array_push($arr,'bbb'); $arr.pop(); print_r($arr);?> 如果你打
-
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
复制代码 代码如下: <?php /*函数array_push():将一个或多个单元压入数组的末尾(入栈) * 1.语法:int array_push ( array &array, mixed var [, mixed ...] ) * 2.描述:将 array 当成一个栈,并将传入的变量压入 array 的末尾.array 的长度将根据入栈变量的数目增加. * 3.注意事项: * 3.1.该函数返回数组新的元素的总数 * 3.2.如var为数组,则该数组是作为一个数组变量入栈到数组栈中,
-
php线性表的入栈与出栈实例分析
本文实例讲述了php线性表的入栈与出栈用法.分享给大家供大家参考.具体如下: <?php $stack = array("Simon", "Elaine"); //定义数组 array_push($stack, "Helen", "Peter"); //入栈 print_r($stack); ?> <?php $stack = array("Simon", "Elaine&quo
-
PHP中使用数组实现堆栈数据结构的代码
在堆栈中,最后压入的数据(进栈),将会被最先弹出(出栈). 即在数据存储时采用"先进后出"的数据结构. PHP中,将数组当做一个栈,主要是使用array_push()和array_pop()两个系统函数来完成. 入栈主要是利用array_push()函数向第一个参数的数组尾部添加一个或多个元素,然后返回新数组的长度,示例如下: 复制代码 代码如下: <?php $zhan=array("WEB");//声明一个数组当做栈 array_push($zhan,&q
-
基于PHP实现栈数据结构和括号匹配算法示例
本文实例讲述了基于PHP实现栈数据结构和括号匹配算法.分享给大家供大家参考,具体如下: 栈,体现的是后进先出,即LIFO.队列,体现的是先进先出,即FIFO. 栈操作: array_pop() //尾出 array_push() //尾进 或 array_shift()//头进 array_unshift()//头出 用例:验证一个数学算式是否正确,比如{2*3[x*y+5+m*(i-j)/3]+k*(4+(t+9))}. 分析:对于一个算式的正确与否,就是体现在,各种括号的匹配上,括号完全匹配
-
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO). PHP SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现. SplQueue类摘要如下: SplQueue简单使用如下: 复制代码 代码如下: $queue = new SplQueue(); /** * 可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为: * (1)SplDoublyL
随机推荐
- AngularJs表单验证实例代码解析
- C# ToString格式大全
- PB7 连接 Oracle 的设置方法
- Python3.2中Print函数用法实例详解
- php利用imagemagick实现复古老照片效果实例
- php通过array_unshift函数添加多个变量到数组前端的方法
- C#数据库操作小结
- mysql中url时区的陷阱该如何规避详解
- vbs 更改环境变量
- 详解Python中映射类型(字典)操作符的概念和使用
- javascript循环链表之约瑟夫环的实现方法
- 微信公众号 客服接口的开发实例详解
- python控制台显示时钟的示例
- php实现微信模拟登陆、获取用户列表及群发消息功能示例
- Numpy掩码式数组详解
- Python创建普通菜单示例【基于win32ui模块】
- python游戏开发之视频转彩色字符动画
- Java代码重用之功能与上下文重用
- vue中组件通信的八种方式(值得收藏!)
- softmax及python实现过程解析