<?php
/**
*快速排序
**/
function quickSort(&$arr,$left,$right)
{
$start=$left;
$end=$right;
while($start<$end){
while($arr[$start]<$arr[$left] && $start!=$end){
$start++;
}
while($arr[$end]>$arr[$left] && $start!=$end){
$end--;
}
$tmp=$arr[$start];
$arr[$start]=$arr[$end];
$arr[$end]=$tmp;
}
if($arr[$start]>$arr[$left]){
$start--;
}
$tmp=$arr[$start];
$arr[$start]=$arr[$left];
$arr[$left]=$tmp;
if($start-1>$left){
quickSort($arr,$left,$start-1);
}
if($start+1<$right){
quickSort($arr,$start+1,$right);
}
}
/**
*快速排序1
**/
function quickSort1(&$arr,$left,$right)
{
$i=$left;
$j=$right;
$flag=$arr[$left];
while($i<$j)
{
while($arr[$j]>=$flag && $i<$j)
{
$j--;
}
if($i<$j)
{
$arr[$i++]=$arr[$j];
}
while($arr[$i]<$flag && $i<$j)
{
$i++;
}
if($i<$j)
{
$arr[$j--]=$arr[$i];
}
}
$arr[$i]=$flag;
if($i>$left){
quickSort1($arr,$left,$i-1);
}
if($i<$right){
quickSort1($arr,$i+1,$right);
}
}
/**
*冒泡排序
*/
function BubbleSort(&$arr)
{
$length=count($arr);
for($i=0;$i<$length;$i++){
for($j=0;$j<$length-$i-1;$j++){
if($arr[$j+1]<$arr[$j]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
}
/**
*选择排序
*/
function SelectSort(&$arr){
$length=count($arr);
for($i=0;$i<$length;$i++){
$now=$i;
$min=$arr[$i];
for($j=$i+1;$j<$length;$j++){
if($arr[$j]<$min){
$min=$arr[$j];
$now=$j;
}
}
$tmp=$arr[$i];
$arr[$i]=$min;
$arr[$now]=$tmp;
}
}
/**
*插入排序
**/
function InsertSort(&$arr){
$length=count($arr);
for($i=1;$i<$length;$i++){
$now=$arr[$i];
if($now<$arr[$i-1]){
for($j=$i-1;$j>=0 && $arr[$j]>$now;$j--){
$arr[$j+1]=$arr[$j];
}
$arr[$j+1]=$now;
}
}
}
//测试排序结果
for($i=0;$i<20;$i++){
$arr[]=$i;
}
shuffle($arr);
print_r($arr);
//quickSort($arr,0,count($arr)-1);
InsertSort($arr);
print_r($arr);
快排、冒泡、选择、插入排序PHP实现
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 缺失:希尔排序、堆排序优化:快速排序 待补充状态 导读 简单算法:冒泡排序O(n2)、简单选择排序O(n2)、直接...
- 选择排序 对于任何输入,时间为O(n*n); 冒泡排序 最优(对于升序的数组,因为加入了一个跳出判断):O(n),...