数组排序问题

<?php
$arr = array(23,3,43,5,56,56,33,5,5);
// 插入排序(一维数组)
function insert_sort($arr){
  $count = count($arr);
  for($i=1; $i<$count; $i++){
    $tmp = $arr[$i];
    $j = $i - 1;
    while($arr[$j] > $tmp){
      $arr[$j+1] = $arr[$j];
      $arr[$j] = $tmp;
      $j--;
    }
  }
  return $arr;
}

//选择排序(一维数组)
function select_sort($arr){
  $count = count($arr);
  for($i=0; $i<$count; $i++){
    $k = $i;
    for($j=$i+1; $j<$count; $j++){
      if ($arr[$k] > $arr[$j])
        $k = $j;
      if ($k != $i){
        $tmp = $arr[$i];
        $arr[$i] = $arr[$k];
        $arr[$k] = $tmp;
      }
    }
  }
  return $arr;
}

//冒泡排序(一维数组)
function bubble_sort($array){
  $count = count($array);
  if ($count <= 0) return false;
  
  for($i=0; $i<$count; $i++){
    for($j=$count-1; $j>$i; $j--){
      if ($array[$j] < $array[$j-1]){
        $tmp = $array[$j];
        $array[$j] = $array[$j-1];
        $array[$j-1] = $tmp;
      }
    }
  }
  return $array;
}

//快速排序(一维数组)
function quick_sort($array){
  if (count($array) <= 1) return $array;

  $key = $array[0];
  $left_arr = array();
  $right_arr = array();
  for ($i=1; $i<count($array); $i++){
    if ($array[$i] <= $key)
      $left_arr[] = $array[$i];
    else
      $right_arr[] = $array[$i];
  }
  $left_arr = quick_sort($left_arr);
  $right_arr = quick_sort($right_arr);
  
  return array_merge($left_arr, array($key), $right_arr);
}

?>

« 显示php程序内的所有外部变量PHP中数组元素升序、降序及重新排序的函数rsort(),sort(),asort(),ksort() »
php的数组排序函数
sort()
按字母升序排列,区分大小写,所有大写字母在小写字母前面

asort()和ksort()
给相关数组排序,asort()给值排序,ksort()给码排序

rsort(),arsort(),krsort()
反向排序函数

natsort()
用“自然排序”算法对数组排序

natcasesort()
用“自然排序”算法对数组进行不区分大小写字母的排序

时间: 2024-10-01 02:19:06

数组排序问题的相关文章

算法-序号字符串数组排序问题

问题描述 序号字符串数组排序问题 字符串数组单个字符串长度不定数字间以-分隔 1-3-12-3-210-23-3-3-3-3-31-1-14-1-2 排序后: 11-1-11-32-3-23-3-3-3-3-34-1-210-2 求思想 解决方案 2752:字符串数组排序问题(java语言) 解决方案二: C语言自带函数strcmp(s1,s2) 说明: 当s1 当s1=s2时,返回值=0 当s1>s2时,返回值>0两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符

PHP中二维数组排序问题

PHP中二维数组排序,可以使用PHP内置函数uasort() [使用用户自定义的比较函数对数组中的值进行排序并保持索引关联] 回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列 $person = array( array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21), array('num'=>'001','id'=>7,'name'=>'aha

PHP二维数组排序问题详解(数组键值排序)

根据某个键值对二维数组进行排序是个常见问题,这里总结一个函数,可同时对两个键值分别排序,当然想要更多的话就自行解决吧. 但是如果需要排序的数组是一个二维数组,需要按照数组的键值排序,如下面这个二维数组,需要按照sort键名来排序,那么array_multisort() 就无法直接实现了: 实例一,  代码如下 复制代码 $arr = array( array( 'sort' => 3, 'a' => 'a', 'b' => 'b' ), array( 'sort' => 5, 'a

php中二维数组排序问题方法详解_php实例

PHP中二维数组排序,可以使用PHP内置函数uasort() 示例一: 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列 $person = array( array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21), array('num'=>'001','id'=>7,'name'=>'

字符串 数组排序问题 求教

问题描述 我获取一个文件夹下的文件名称,Arrays.sort()排序后为什么,和windows的排序规则不同?需求是要按照windows中的排序(按名称递增):如图: 解决方案 解决方案二:想死的心都有了:用compareTo()冒泡排了一下和sort结果一样:windows这按名称递增到底什么排序方式啊?解决方案三:需要写一个比较器实现windows的排序算法,具体不清楚,但大概应该是这个样子的importjava.util.Comparator;publicclassNumberCompa

类的指针数组的排序问题

问题描述 类的指针数组的排序问题 我在做课设,学生成绩管理系统 排序的时候,交换两个对象时候,内部的字符串全部变成了乱码,就是烫啊之类的东西 解决方案 贴出你的代码.你怎么交换的对象,直接赋值的话,是浅拷贝,数组还是指向原来的地址,如果地址在堆栈上或者被回收,就会出现你说的情况. 解决方案二: 代码错误太多了,都没法修改 随便说一个 if( strcmp( user[k].getnum() , user[j].getnum() ) < 0 ) 这里num是数字,怎么用strcmp比较??? 解决

as3 Array.UNIQUESOR:如果数组有相同元素,则放弃排序

今天遇到一个很奇怪的AS3数组排序问题,我们知道sortOn可以对数组的元素按指定字段进行排序.我做的邮件系统中,首先根据邮件状态排,再根据索引排 但是策划和我说有bug,我一看还真有,都乱了.于是我检查了了下,发现服务器没有错,应该是sortOn排序有错了.   测试程序:  代码如下 复制代码 1.var arr:Array = []; 2.var mailVo:Object; 3.for(var i:int = 0;i < 20 ;i++) 4.{ 5.         mailVo =

[算法系列之十一]荷兰国旗问题

[问题] 现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起.这个问题之所以叫荷兰国旗问题,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗. [分析] 这个问题我们可以将这个问题视为一个数组排序问题.红白蓝分别对应数字0.1.2.红.白.蓝三色小球数量并不一定相同. [思路一] First, iterate the array counting number of 0's, 1's, and 2's, then overwr

arc-求助攻~怎样用ARC汇编语言实现数组的排序问题??

问题描述 求助攻~怎样用ARC汇编语言实现数组的排序问题?? 用ARC汇编语言实现数组的排序问题~~~刚开始接触 ~~~~~~~~