php三种常用的排序算法
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-02 14:31:18 浏览: 评论:0
php三种常用的排序算法
1、冒泡排序,稳定排序
个人理解:冒泡排序就是两个循环,大循环套小循环,从头或者尾部开始比较连续的两个元素的大小,如果不符合自己的排序标准,由小到大,或由大到小,则交换其值.
- <?php
- $arr=array(10,15,16,18,20,3,9,7,18,99);
- for($i=1;$i<=9;$i++)
- for($j=1;$j<=10-$i;$j++)
- if($arr[$j-1]>$arr[$j])
- {$temp=$arr[$j-1];$arr[$j-1]=$arr[$j];$arr[$j]=$temp;}
- echo"after sorted:";
- for($i=0;$i<=9;$i++)
- echo $arr[$i].",";
- ?>
方法二
- function bubble_sort($array){
- $count=count($array);
- for($i=0;$i<$count;$i++){
- for($j=$count-1;$j>$i;$j--){
- if($array[$j]<$array[$j-1]){//如果后面的值小于前面的元素,则交换值
- $temp=$array[$j];
- $array[$j]=$array[$j-1];
- $array[$j-1]=$temp;
- }
- }
- }
- }
2、快速排序,又称数组排序,不稳定排序.
个人理解:在要排序的数组中找一个关键数据(标准值),通常把数组的第一个元素当成关键数据,然后循环数组,从第二个元素开始依次将元素值与关键数据进行比较,如果小于关键数据,就把该元素放在关键值左边,如果答应关键数据,就把该元素放在关键数据右边,将关键值左边元素存成数组,右边元素也存成数组,再分别进行以上排序,得到的数组与关键数据合并数组后就排序成功:
- function quick_sort($array){
- $count=count($array);
- if($count<=1) retrun $array; //如果数组只有一个元素或为空,则直接返回数组,不用排序了
- $key=$array[0]; //将数组第一个元素设置为关键数据
- $left_arr=array();
- $right_ar=array();
- for($i=1;$i<$count;$i++){
- if($array[$i]<=$key)
- $left_arr[]=$array[$i];
- else
- $right_arr[]=$array[$i];
- }
- $left_arr=quick_sort($left_arr);
- $right_arr=quick_sort($right_arr);
- //返回合并后的数组
- return array_merge($left_arr,array($key),$right_arr);
- }
3、选择排序,不稳定排序
个人理解:选择排序就是在要排序的数组中选出最小值与第一个元素交换值,然后再剩下的元素中选出最小值与第二个元素交换值,如此循环到倒数第二个元素和最后一个元素比较为止.
- function select_sort($array){
- $count=count($array);
- if($count<=1) return $array;
- for($i=0;$i<$count-1;$i++){
- $min=$array[$i]; //假设当前元素为数最小,比较后再调整
- for($j=$i+1;$j<$count;$j++){
- if($array[$j]<$min){
- $min=$array[$j];
- $key=$j; //将此时值最小的元素的键名记下,
- }
- }
- if($min!=$array[$i]){ //如果min在循环中改变了,就需要交换数据
- $temp=$array[$i];
- $array[$i]=$array[$key];
- $array[$key]=$temp;
- }
- }
- }
Tags: php算法 排序算法
- 上一篇:PHP抓取网页内容的方法
- 下一篇:读取团购网站的api的php程序
相关文章
- ·php:树形结构的算法(2013-11-13)
- ·最简单的php中字符串匹配算法教程(2015-04-06)
- ·PHP全排列算法实现程序代码(2015-04-08)
- ·用PHP实现URL转换短网址的算法示例(2016-07-27)
- ·PHP常用算法和数据结构示例(必看篇)(2018-08-09)
- ·php算法实例分享(2021-06-11)
- ·php 算法之实现相对路径的实例(2021-08-13)
- ·PHP冒泡排序算法详解(2014-07-23)
- ·PHP中实现冒泡排序和快速排序算法示例(2015-04-04)
- ·PHP 冒泡/快速/选择/插入排序算法实例讲解(2015-12-24)
- ·php四种基础排序算法的运行时间比较(2016-08-25)
- ·又一个PHP实现的冒泡排序算法分享(2021-04-07)
- ·又一个PHP实现的冒泡排序算法分享(2021-04-07)
- ·php实现的常见排序算法汇总(2021-04-11)
- ·PHP简单选择排序算法实例(2021-05-09)
- ·PHP两种快速排序算法实例(2021-05-14)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)