码迷,mamicode.com
首页 > 编程语言 > 详细

排序学习之---冒泡排序

时间:2018-10-10 01:08:21      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:param   highlight   技术   方式   png   coding   str   python版本   com   

python版本

# *_*coding:utf-8 *_*
#对于一个长度为N的数组,我们需要排序 N-1 轮,每 i 轮 要比较 N-i 次。对此我们可以用双重循环语句,外层循环控制循环轮次,内层循环控制每轮的比较次数
def bubble_sort(sort_list,sort=‘asc‘):
    if len(sort_list) <= 0:
        return []
    count = len(sort_list)
    sorted_list = sort_list
    for i in range(0,count-1):
        print(‘第%d趟排序:‘ % (i + 1))
        for j in range(0,count-i-1):
            if sorted_list[j] > sorted_list[j + 1]  :
                sorted_list[j], sorted_list[j + 1] = sorted_list[j + 1], sorted_list[j]
            print(sorted_list)



list = [3,4,2,6,5,9]
bubble_sort(list)

 

技术分享图片

 

 

php版本

<?php
/**
 * Created by PhpStorm.
 * User: mac
 * Date: 2018/10/9
 * Time: 22:39
 */

/**
 * @author brady
 * @desc   冒泡排序
 * @param $arr 待排序的数组
 * @param string $sort 排序方式 asc 升序  desc降序
 * @time  2018/10/9
 * 一共要外层循环n-1次 内层循环每次外层循环一次 最后一个会不需要排序 n-i-1次
 */
function bubble_sort($arr,$sort=‘asc‘)
{
    $count = count($arr);

    for($i = 0; $i < $count-1; $i++){
        for($j = 0; $j< $count - 1 - $i; $j++){
            $tmp = ‘‘;
            if($sort == ‘asc‘){
                if($arr[$j] > $arr[$j+1]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $tmp;

                }
            } else {
                if($arr[$j] < $arr[$j+1]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $tmp;

                }
            }

            echo "第".($i+1)."轮循环 后数组排序为:".json_encode($arr)."<br>";
        }
        echo "<hr>";
    }

    return $arr;

}
/**
 * @author brady
 * @desc   冒泡排序
 * @param $arr 待排序的数组
 * @param string $sort 排序方式 asc 升序  desc降序
 * @time  2018/10/9
 * 从最后一个进行冒泡 把最大的冒泡到最左边  第一次 冒泡后 第二次 最左边的一个已经合格 内层循环少一次 所以为 只循环 $j>$i
 */
function bubble_sort2($arr,$sort=‘asc‘)
{
    $count = count($arr);

    for($i = 0; $i < $count-1; $i++){
        for($j = $count - 1; $j> $i ; $j--){

            $tmp = ‘‘;
            if($sort == ‘desc‘){
                if($arr[$j] > $arr[$j-1]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j-1];
                    $arr[$j-1] = $tmp;

                }
            } else {
                if($arr[$j] < $arr[$j-1]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j-1];
                    $arr[$j-1] = $tmp;

                }
            }

            echo "第".($i+1)."轮循环 后数组排序为:".json_encode($arr)."<br>";
        }
        echo "<hr>";
    }

    return $arr;

}


$arr = [9,6,3,7,5,4];
$res = bubble_sort2($arr,‘asc‘);
echo "<pre>";
print_r($res);
echo "</pre>";


$b=[1,2,3,7,5,4];
$len=count($b);//6
for($k=1;$k<$len;$k++)
{
    for($j=0;$j<$len-$k;$j++){
        if($b[$j]>$b[$j+1]){
            $temp =$b[$j+1];
            $b[$j+1] =$b[$j] ;
            $b[$j] = $temp;
        }

        echo "第".($k)."轮循环 后数组排序为:".json_encode($b)."<br>";
    }
    echo "<hr>";

}

print_r($b);

 

 

技术分享图片

 

排序学习之---冒泡排序

标签:param   highlight   技术   方式   png   coding   str   python版本   com   

原文地址:https://www.cnblogs.com/php-linux/p/9762086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!