zoukankan      html  css  js  c++  java
  • 重温PHP之插入排序

      插入排序基本思路:将数组分为两个区(已排序区和未排序区),假定数组的第一个元素处于已排序区, 第一个元素之后的所有元素都处于未排序部分。排序时用到双层循环,外层循环用于从未排序部分中取出待排序元素,并逐步缩小未排序部分,内层循环用于从已排序部分寻找插入位置(即不断地从已排序部分寻找比待排序元素大的元素), 然后将较大的已排序区的元素后移,后移的最终结果是已排序区元素的最后一个元素占据待排序元素原来的位置,而已排序区中间空出一个位置),最后将待排序元素插入元素后移之后留下的空位。

     1 //插入排序
     2 function insert_sort($arr) {
     3     //获取数组单元个数
     4     $count = count($arr);
     5     //外层循环用于从未排序区域中取出待排序元素
     6     for ($i=1; $i < $count; $i++) {
     7         //获取当前需要插入已排序区域的元素值
     8         $temp = $arr[$i];
     9         //内层循环用于从已排序区域寻找待排序元素的插入位置
    10         for ($j=$i-1; $j >= 0; $j--) {
    11             //如果$arr[$i]比已排序区域的$arr[$j]小,就后移$arr[$j]
    12             if ($temp < $arr[$j]) {        
    13                 $arr[$j+1] = $arr[$j];
    14                 $arr[$j] = $temp;
    15             } else {
    16                 //如果$arr[$i]不小于$arr[$j],则对已排序区无需再排序
    17                 break;
    18             }
    19         }
    20     }
    21     return $arr;
    22 }
    23 
    24 $arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1);
    25 var_dump(insert_sort($arr));
      测试结果:
      
      
    
    
  • 相关阅读:
    easyui-filebox上传图片到阿里
    easyUI-filebox图片上传和预览
    抓网页__第3方库选择_01
    HttpClient示例01
    JSON01_资料
    指定library路径
    Jni_Linux_01_转
    JNI简单步骤01
    JDK_环境变量
    Redis_01
  • 原文地址:https://www.cnblogs.com/splendid/p/9647673.html
Copyright © 2011-2022 走看看