自写php字符串从小到大排序函数

html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Documenttitle>
head>
<body>
                  $str='16438889';
       //写一个方法
       function strsort($str){
           //定义两个变量
           $i=0;
           $j=0;
           //采用white循环
           while($i==0){//循环终止条件
               if(@$str[$j]){//
                   $arr[] = $str[$j];
                   $j++;
               }else{
                   $i=1;
               }
           }

           for($i=1;$i<$j;$i++){
               for($k=0;$k<$i;$k++){
                   if($arr[$i]<$arr[$k]){
                       $tmp = $arr[$i];
                       $arr[$i] = $arr[$k];
                       $arr[$k] = $tmp;
                   }
               }
           }
           $str = '';
           for($i=0;$i<$j;$i++){
               $str .= $arr[$i];
           }
           echo $str;
       }
       $str='16439';
       //strsort($str);



       //       header("content-type:textml;charset=utf-8;");
       //
       //
       //
       //
       //       function strsort($str){
       //           //定义两个变量并赋值为0
       //           $i=0;
       //           $j=0;
       //
       //           //通过while循环 将字符串转换为数组
       //           //其实一个函数就可以搞定array_splid();
       //           while($i==0){ //条件为真执行循环体
       //               if(@$str[$j]){ //判断该位置上有没有数字
       //                   //如果不为空则赋值给数组
       //                   $arr[] = $str[$j];
       //                   $j++; //执行完后$j自增  循环完成后$j的值为数组长度
       //               }else{
       //                   //$i = 1 说明字符串为空 跳出循环
       //                   $i=1;
       //               }
       //           }
       //
       //
       //           //循环数组 双层循环
       //           //外层循环循环$i  此时$j = count($arr);也就是数组长度
       //           for($i=1;$i<$j;$i++){  //内存循环的的上限是$i 所以$i=1才能保证在内层的第一次循环中有两个值进行比较
       //               //内层循环  循环$k
       //               for($k=0;$k<$i;$k++){ //此时将$arr[$i]作为比较的标准
       //                   //用当前值和标准值进行比较
       //                   if($arr[$i]<$arr[$k]){  //当当前值大于标准值的时候交换两个值
       //                       $tmp = $arr[$i];
       //                       $arr[$i] = $arr[$k];
       //                       $arr[$k] = $tmp;
       //                   }
       //               }
       //           }
       //
       //           //循环完成之后 数组已经是从大到小排列
       //           $str = '';
       //           //循环将数组中的值拼接成字符串  一个函数就能搞定 join()
       //           for($i=0;$i<$j;$i++){
       //               $str .= $arr[$i];
       //           }
       //           echo $str;
       //       }
       //
       //
       //       $str='987654321';
       //       $str = strsort($str);
       //       echo $str;
       //
       //
       //
       //
       //
       //
       //       /*
       //       原理 将第一个元素付给变量k  定义i 和 j  i = 0 从左向右找
       //       j= 数组长度减一 从右向左找
       //       1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
       //       2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
       //       3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
       //       4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
       //       5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
       //       */
       //
       //       /*
       //       function quickSort(&$arr){
       //
       //           //判断数组的长度是否大于1 也就是判断是不是由多个数字
       //           if(count($arr)>1){
       //               //将第一个值赋给$k
       //               $k=$arr[0];
       //               $x=array();  //定义空数组
       //               $y=array();  //定义空数组
       //
       //               //数组长度
       //               $_size=count($arr);
       //
       //               //开始循环
       //               for($i=1;$i<$_size;$i++){
       //                   if($arr[$i]<=$k){
       //                       $x[]=$arr[$i];  //比$k小的放到$x数组中
       //                   }elseif($arr[$i]>$k){
       //                       $y[]=$arr[$i];  //比$k大的放到$y中
       //                   }
       //               }
       //
       //               //递归
       //               $x=quickSort($x);
       //               $y=quickSort($y);
       //               return array_merge($x,array($k),$y);
       //
       //
       //           }else{
       //               return $arr;
       //           }
       //       }
       //
       //
       //       //调用方法
       //       $arr = [1,9,55,62,33,41,72,20,43];
       //       $arr = quickSort($arr);
       //       print_r($arr);
       //       */
       ?>

       ?>


body>
html>

你可能感兴趣的:(php)