首页 > 学院 > 逻辑算法 > 正文

PHP实现冒泡算法

2020-03-22 16:37:20
字体:
来源:转载
供稿:网友
  • 我发现很多公司面试的时候都会出一道冒泡算法的题,这么基础的算法,一般程序员应该都写得出来,但是今天我在网上看了一下,发现很多文章中的冒泡算法都是错的,根本就不是冒泡算法!还堂而皇之的说什么解析冒泡算法,真是误导新人啊。我就直接上代码了,这,才是冒泡算法。

    <?phpfunction bubbleSort($ary){	$len = count($ary);	for ($i=0; $i < $len - 1; $i++) { 		for ($j=0; $j < $len - 1 -$i; $j++) { 			if ($ary[$j] > $ary[$j + 1]) {				$tmp = $ary[$j];				$ary[$j] = $ary[$j + 1];				$ary[$j + 1] = $tmp;			}		}	}	return $ary;}$ary = [7,6,789,3,56,8,1234,45];$newAry = bubbleSort($ary);print_r($newAry);?>

    好吧,下面我就说说,什么不是冒泡算法。

    当然啦,首先要说说什么才是冒泡算法,它的作用是把一个乱序数组按照大小顺序排列。实现原理我就直接拿个实例来说明吧。

    $ary = [7,6,78,1];
    把这个数组从小到大进行排列,首先把第一个数和第二个数进行比较,在这个数组里就是7和6比较,7比6大,第一次循环后数组就变成这个样子。

    $ary = [6,7,78,1];
    第二次循环7和78比较,结果不变。

    $ary = [6,7,78,1];

    第三次78和1比较,78比1大,调换位置,结果

    $ary = [6,7,1,78];
    这样内部就循环完一次了,开始进行第二次循环,跟上面一样的,我就不细写了。

    这就是冒泡算法,名字起得非常形象,就像一个个小泡泡往上冒一样。

    但是我在百度搜索“冒泡算法”,出来的第一篇文章是这个

    经典排序算法 - 冒泡排序Bubble sort

    他给出的代码是这样的:

    html' target='_blank'>static void bubble_sort(int[] unsorted)        {            for (int i = 0; i < unsorted.Length; i++)            {                for (int j = i; j < unsorted.Length; j++)                {                    if (unsorted[i] > unsorted[j])                    {                        int temp = unsorted[i];                        unsorted[i] = unsorted[j];                        unsorted[j] = temp;                    }                }            }        }        static void Main(string[] args)        {            int[] x = { 6, 2, 4, 1, 5, 9 };            bubble_sort(x);            foreach (var item in x)            {                Console.WriteLine(item);            }            Console.ReadLine();        }

    这明显不是冒泡算法好吗?!


    这个算法是从一个数组的第一个数开始,分别与他后面的所有数字比较,如果比后面的数字大,就互相调换位置,虽然最后也能得到正确结果,但这根本不是冒泡算法,可能叫另一种算法吧。真是误人子弟。

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表