Heim  >  Artikel  >  Backend-Entwicklung  >  实例学习php插入排序的实现方法

实例学习php插入排序的实现方法

WBOY
WBOYOriginal
2016-07-25 08:51:20771Durchsuche
  1. /**

  2. * 插入排序
  3. * @param Array $a 无序集合
  4. * @return Array 有序集合
  5. */
  6. function insertSort($a) {
  7. $temp;
  8. $i;
  9. $j;
  10. $size_a = count($a);
  11. # 从第二个元素开始
  12. for ($i = 1; $i if ($a[$i] $j = $i; # 保存当前元素的位置
  13. $temp = $a[$i]; # 当前元素的值
  14. # 比较左边的元素,如果找到比自己更小的,向右移动元素,否则插入元素到当前位置
  15. while($j>0 && $temp$a[$j] = $a[$j-1];
  16. $j--;
  17. }
  18. # 插入元素

  19. $a[$j] = $temp;
  20. }
  21. }
  22. return $a;
  23. }
  24. /**
  25. * 获取随机数
  26. * @param Integer $size 数量
  27. * @return Integer
  28. */
  29. function randomNumber($size = 10) {
  30. $rand = array();
  31. srand(time(NULL));
  32. for ($i = 0; $i array_push($rand, mt_rand(0,1000));
  33. }
  34. return $rand;
  35. }
  36. $a = randomNumber();
  37. echo sprintf("Unsorted list %s\n", implode(" ", $a));
  38. echo sprintf("Sorted list %s\n", implode(" ", insertSort($a)));
复制代码

php插入排序实现代码

插入排序: 将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。

算法描述: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 ⒌ 将新元素插入到下一位置中 ⒍ 重复步骤2

例子:

  1. $arr =array(123,0,5,-1,4,15);

  2. function insertSort(&$arr){
  3. //先默认第一个下标为0的数是排好的数
  4. for($i=1;$i//确定插入比较的数
  5. $insertVal=$arr[$i];
  6. //确定与前面比较的数比较
  7. $insertIndex=$i-1;
  8. //表示没有找到位置

  9. while($insertIndex>=0 && $insertVal//把数后移
  10. $arr[$insertIndex+1]=$arr[$insertIndex];
  11. $insertIndex--;
  12. }
  13. //插入(给$insertval找到位置了)
  14. $arr[$insertIndex+1] = $insertVal;
  15. }
  16. }
  17. insertSort($arr);
  18. print_r($arr);
  19. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn