PHP实现插入排序,选择排序,冒泡排序和快速排序
2014-03-23 12:00
645 查看
<?php /* 插入排序、选择排序、,冒泡排序,时间复杂度貌似都是 O(N2),快速排序一般较快 */ class Sort{ //插入排序 public function insertSort($arr){ $count=count($arr); if($count<=1) return $arr; for($i=1;$i<$count;$i++){ $temp=$arr[$i]; $j=$i-1; while($j>-1&&$arr[$j]>$temp){ $arr[$j+1]=$arr[$j]; $arr[$j]=$temp; $j--; } } return $arr; } //选择排序 public function selectSort($arr){ $count=count($arr); if($count<=1) return $arr; for($i=0;$i<$count-1;$i++){ $min=$i; for($j=$i+1;$j<$count;$j++){ if($arr[$j]<$arr[$min]) $min=$j; if($min!=$i){ $temp=$arr[$i]; $arr[$i]=$arr[$min]; $arr[$min]=$temp; } } } return $arr; } //冒泡排序 public function bubbleSort1($arr){ $count=count($arr); if($count<=1) return $arr; for($i=0;$i<$count;$i++){ for($j=$count-1;$j>$i;$j--){ if($arr[$j]<$arr[$j-1]){ $temp=$arr[$j]; $arr[$j]=$arr[$j-1]; $arr[$j-1]=$temp; } } } return $arr; } public function bubbleSort2($arr){ $count=count($arr); if($count<=1) return $arr; for($i=0;$i<$count-1;$i++){ for($j=0;$j<$count-1-$i;$j++){ if($arr[$j]>$arr[$j+1]){ $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } return $arr; } //快速排序 public function quickSort($arr){ $count=count($arr); if($count<=1) return $arr; $key=$arr[0]; $left_arr=array(); $right_arr=array(); for($i=1;$i<$count;$i++){ if($arr[$i]<=$key){ $left_arr[]=$arr[$i]; }else{ $right_arr[]=$arr[$i]; } } $left_arr=$this->quickSort($left_arr);//注意递归的时候要加上$this->,因为类的方法是有作用域的 $right_arr=$this->quickSort($right_arr); return array_merge($left_arr,array($key),$right_arr); } } //测试,测试一定要在class外 $array=array(12,15,9,20,6,31,24); $sort=new Sort(); $arr=$sort->bubbleSort2($array); print_r($arr); ?>
相关文章推荐
- 内部排序冒泡排序、插入排序、选择排序、快速排序的算法和PHP实现
- php实现冒泡排序,选择排序,插入排序和快速排序
- java实现冒泡排序,插入排序,选择排序,快速排序
- 学习笔记:冒泡排序、插入排序、选择排序、快速排序的实现
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 用JS实现冒泡排序、插入排序、选择排序、快速排序
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 最简单之Java实现冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序(转载请注明出处)
- PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
- PHP四种基础算法详解(冒泡排序、选择排序、插入排序、快速排序)
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法
- 冒泡排序-选择排序-快速排序(PHP实现)
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 冒泡排序,选择排序,插入排序,快速排序(PHP)
- php 冒泡排序,选择排序、插入排序、快速排序
- js实现的冒泡排序、选择排序、插入排序、快速排序
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 选择排序、插入排序、冒泡排序python实现