1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 快速排序;用php实现sort进行字符串的排序

快速排序;用php实现sort进行字符串的排序

时间:2022-04-12 23:14:16

相关推荐

快速排序;用php实现sort进行字符串的排序

在PHP函数中有sort函数,进行对数组的排序。

如果需要字符串 则用 implode(array())来将数组转换成字符串进行输出

这里有普通的函数来时sort的实现思路

<?phpfunction show($str){if(count($str)>1){$k=$str[0];$x=array();$y=array();$_size=count($str);for($i=1;$i<$_size;$i++){if($str[$i]<=$k){$x[]=$str[$i];}elseif($str[$i]>$k){$y[]=$str[$i];}}$x=show($x);$y=show($y);return array_merge($x,array($k),$y);}else{return $str;}}$a=9621;$arr=str_split($a,1);$arr1=show($arr);$arr2=implode($arr1);echo $arr2;

会依次输出9621

还有一个快速排序的思路

function myQuickSort(<span style="font-size:18px;">&</span>$arr){//首先判断数组的长度,如果大于1则进行排序if(count($arr)>1){//选取数组中第一个元素作为比较的关键字$key = $arr[0];$left = array();$right = array();$len = count($arr);$i=1;$j=$len-1;$bank = $len%2;//如果数组长度为奇数,则左右数组的比较次数相等//如果数组长度为偶数,则右数组的比较次数比左数组多一次if($bank==1){//先从数组的右端开始比较,比较次数为xfor($x = 0;$x<($len-1)/2;$x++){if($arr[$j]<=$key){$left[] = $arr[$j];$j--;}else{$right[] = $arr[$j];$j--;}//再从数组的左端比较,比较次数为xif($arr[$i]>=$key){$right[] = $arr[$i];$i++;}else{$left[] = $arr[$i];$i++;}}}else{for($x=0;$x<$len/2;$x++){//从数组右端开始比较,比较次数为xif($arr[$j]<=$key){$left[] = $arr[$j];$j--;}else{$right[] = $arr[$j];$j--;}if($x==(($len/2)-1)){break;}//从数组左端比较,比较次数为x-1if($arr[$i]>=$key){$right[] = $arr[$i];$i++;}else{$left[] = $arr[$i];$i++;}//$left = array_pop($left);}}}else{return $arr;}//嵌套,直到排序完成$left = myQuickSort($left);$right = myQuickSort($right);//将比较后的数组合并,返回数据return array_merge($left,array($key),$right);}

或者 用sort将 字符串和数组进行互相转换

sort()默认排序[A-Z],从小到大

sort($array,[sort_flags])

有两个参数

一个参数是要排序的数组,

第二个是可以用以下值改变排序的行为

排序类型标记:

SORT_REGULAR- 正常比较单元(不改变类型)SORT_NUMERIC- 单元被作为数字来比较SORT_STRING- 单元被作为字符串来比较SORT_LOCALE_STRING- 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。SORT_NATURAL- 和 natsort() 类似对每个单元以"自然的顺序"对字符串进行排序。 PHP 5.4.0 中新增的。SORT_FLAG_CASE- 能够与SORT_STRINGSORT_NATURAL合并(OR 位运算),不区分大小写排序字符串。 返回值为bool

示例代码

<?php$fruits = array("lemon", "orange", "banana", "apple");sort($fruits);foreach ($fruits as $key => $val) {echo "fruits[" . $key . "] = " . $val . "\n";}?> 以上例程会输出:fruits[0] = applefruits[1] = bananafruits[2] = lemonfruits[3] = orange

在对含有混合类型值的数组排序时要小心,因为sort()可能会产生不可预知的结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。