冒泡排序法相关解析

来源:互联网 发布:中金 薪水 知乎 编辑:程序博客网 时间:2024/05/10 19:39

使用php对数组进行冒泡排序

对数组进行冒泡排序的前提是数组值类型可转为数字型

(php是弱类型语言【javascript、python也是】,变量类型定义时无需说明,运算时自动转换,例:2 == 1 + “1”);

目标数组中允许存在重复的值 —— 是;

冒泡排序思路:从数组尾部开始向前取数字并和其它每个数字比较,遇到比自己大的就和其交换(循环 n+(n-1)+(n-2)+…+1 次完成排序【其中n为要排序的数组长度】),小的值不断向前移动,就像水中的气泡向上飘一样。

代码:

<?php$arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]; //示例数组$length = count($arr); //数组长度for ($i = 0; $i < $length; $i++) {    for ($j = $length - 1; $j > $i; $j--) {        if ($arr[$j] < $arr[$j - 1]) { //交换两个值;如果使用 > ,数组会从大到小排序            $tmp = $arr[$j];            $arr[$j] = $arr[$j - 1];            $arr[$j - 1] = $tmp;        }    }}print_r($arr);

库函数说明:

  1. count() ——获取数组长度,示例:count([1,2,3,4,5])==5

调试代码显示出排序过程:

[9,8,7,6,5,4,3,2,1,0] - 0 - 987654321
[0,9,8,7,6,5,4,3,2,1] - 1 - 98765432
[0,1,9,8,7,6,5,4,3,2] - 2 - 9876543
[0,1,2,9,8,7,6,5,4,3] - 3 - 987654
[0,1,2,3,9,8,7,6,5,4] - 4 - 98765
[0,1,2,3,4,9,8,7,6,5] - 5 - 9876
[0,1,2,3,4,5,9,8,7,6] - 6 - 987
[0,1,2,3,4,5,6,9,8,7] - 7 - 98
[0,1,2,3,4,5,6,7,9,8] - 8 - 9
[0,1,2,3,4,5,6,7,8,9] - 9 -
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )

库函数说明:

  1. json_encode() ——将数组转为json格式,示例:json_encode([1,2,3,4,5])==[1,2,3,4,5]

推荐调试代码(附函数形式代码):https://github.com/lifankohome/csdn/blob/master/maopao.php

原创粉丝点击