个人博客
专注IT梦想的地方

php中的几种内部排序方法

说到排序,相信作为一个程序员那是必须要了解和最基本的东西,之前在学java的时候就已经领略到了排序的魅力,而在php中的排序无非也是那么几种,所以在这里分享给大家,当然,我在这里都已经整合成函数的形式,所以大家如果有在使用的,可以直接调用就行了,非常的方便。

冒泡排序

//冒泡排序法
function arrMao(&$arr){
	$temp = 0 ;
	for($i=0;$i<count($arr)-1;$i++){
		for($j=0;$j<count($arr)-1-$i;$j++){
			if($arr[$j]>$arr[$j+1]){
				$temp = $arr[$j];
				$arr[$j]=$arr[$j+1];
				$arr[$j+1]=$temp;
			}
		}
	}
	return $arr;
}

选择排序

选择排序比冒泡排序在效率上要高,这个已经测试过了的,代码如下:

//选择排序法
function arrXuan(&$arr){
	for($i=0;$i<=count($arr)-1;$i++){
		for($j=$i+1;$j<count($arr);$j++){
			if($arr[$i]>$arr[$j]){
				$temp = $arr[$i];
				$arr[$i] = $arr[$j];
				$arr[$j] = $temp;
			}
		}
	}
	return $arr;
}

插入排序

对于插入排序比之前的两种排序方法的效率要高的。

它的基本思想是:把n个待排序的元素看成为一个有序表和一个无需表,开始时有序表中只包含一个元素,无需表中包含有n-1个元素,排序过程中每次从无需表中取出第一个元素,把它的排序码一次雨有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

代码如下:

function arrCha(&$arr){
	for($i=1;$i<count($arr);$i++){
		$insertVal = $arr[$i];

		$insertIndex = $i-1;

		while($insertIndex>=0&&$insertVal<$arr[$insertIndex]){
			$arr[$insertIndex+1]=$arr[$insertIndex];
			$insertIndex--;
		}
		$arr[$insertIndex+1]=$insertVal;
	}
	return $arr;
}

快速排序

快速排序法是最难的一种,但是它的效率当然也是最高的,20W的数据可以在2秒钟内搞定,这就是效率,当然了,在一瞬间你的内存也会吃紧的。

代码如下:

function arrKuai($left,$right,&$arr){
	$l = $left;
	$r = $right;
	$pivot = $arr[($left+$right)/2];
	$temp = 0;

	while($l<$r){
		while($arr[$l]<$pivot) $l++;
		while($arr[$r]>$pivot) $r--;

		if($l>=$r) break;

		$temp = $arr[$l];
		$arr[$l] = $arr[$r];
		$arr[$r] = $temp;
	}

	if($l==$r){
	
		$l++;
		$r--;
	}
	if($left<$r) arrKuai($left,$r,$arr);
	if($right>$l) arrKuai($l,$right,$arr);


	return $arr;
}

总结

无论你是使用哪种,关键是你了解这些方法的基本思想原理就可以了。

赞(0) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » php中的几种内部排序方法

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏