排序


排序:(数组的排序)

常用的:冒泡排序,选择排序,插入排序,(快速排序)
排序是一个程序员的基本功;
函数sort()是系统提供的数组从小到大排列的方法;
内部排序:把数据加载到内存的排序;(交换,选择,插

入);
外部排序:数据大,内存无法加载;可将数据分部分载入
          内存;需要借助外部文件来存储;

交换(冒泡,快速);


冒泡:像水底的气泡一样向上冒,大的从后向前冒,即:
       从后向前 数与相邻的数比较大的放前面,小的
       排后面;(从大到小)(从小到大也行)
          //冒泡排序法
   $arr=array(0,5,-1);

   //我们要把数组,从小到大排

   //外层循环
   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;
           
           }
        
        }

   }

选择排序法:
 这数组的N个元素中选择一个最小的,放在第一位
 在剩下的N-1个元素中选择一个最小的,放在第二位;
 function selectsort(&$arr){
    $temp=0;

    for($i=0;$i<count($arr)-1;$i++){
    
        //假设$i就是最小数
        $minval=$arr[$i];
        $minindex=$i;
        for($j=$i+1;$j<count($arr);$j++){
        
            if($minval>$arr[$j]){
            
               $minval=$arr[$j];
               $minindex=$j;
            
            }
        
        }
        //最后交换
        $temp=$arr[$i];
        $arr[$i]=$arr[$minindex];
        $arr[$minindex]=$temp;


    }

 }
 $arr=array(3,2,4,23,-12,-323);
 selectsort($arr);
 print_r($arr);


插入排序法
  给你一个数组$arr[],它有n个值,但我们可以假设,
  $arr[]只有一个元素x,把别的n-1个元素y和这个元素    比较如果比这个元素x小,这个元素x向后移一位,元素
   y 插入

   例子:
    $arr=array(x,y,z)--假设(x)--y<x-->(y,x,z)
    --z<x--(y,x,x)--z<y--(y,y,x)-->(z,y,x)
    
    function insertsort(&$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;
    }
 
 }

posted on 2012-12-08 00:51  磊W磊  阅读(128)  评论(0)    收藏  举报

导航