一、冒泡排序

来源:互联网 发布:win10软件分辨率不正常 编辑:程序博客网 时间:2024/04/28 08:26

1、算法原理

        冒泡排序算法的操作如下:(大数沉底)
        1.比较相邻的元素。如果前者比后者大,就交换它们。
        2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。因此,最后的元素应该会是最大的数。
        3.针对所有的元素重复以上的步骤,除了最后一个。
        4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

        n个数,总共需要n-1趟比较,第i个数比较的次数为n-i-1次。算法平均时间复杂度为O(n^2),最差时间为O(n^2),空间平均复杂度为O(1)。冒泡排序是稳定的排序算法。


2、代码实现

(1)JAVA实现

/*

 * 排序算法:冒泡排序

 * 作者:xiaoxiao

 * 日期:2016-03-11

 */

public class BubbleSortMethod {

    public static void main(String[]args){

        int a[] = {1,4,0,23,3,4,0,5,6,0,7,8,76,32,3,45,6,7,89,65,4,3,2,1,1,1,1,12,3,0,-1};

        int i;

       System.out.print("排序前:");

        for(i=0; i<a.length; i++){

               System.out.print(a[i]+",");

        }

        System.out.println();

        BubbleSorted(a);

        System.out.print("排序后:");

        for(i=0;i<a.length;i++){

            System.out.print(a[i]+",");

        }

    }

    public static void BubbleSorted(int[] arrayData){

        int narrayData.length;

        int temp;

        for(int i=0;i<n-1;i++){//趟次:n-1

            for(int j=0;j<n-i-1;j++){//每趟比较次数:n-i-1

                if(arrayData[j]>arrayData[j+1]){

                    temparrayData[j];

                    arrayData[j] = arrayData[j+1];

                    arrayData[j+1] = temp;

                }

            }

        }

    }

}

运行结果:     


(2)PHP实现

<!--
* 排序算法:冒泡排序
  * 作者:xiaoxiao
  * 日期:2016-03-11
-->

<?php
    echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";//如果涉及到PHP网页中文乱码问题,加上该行

    function BubbleSort($a){
        $n = count($a);
        if($n<=0){
            return false;
        }
        for($i=0; $i<$n-1; $i++){//趟次:n-1
            for($j=0; $j<$n-$i-1; $j++){//每趟比较次数:n-i-1
                if($a[$j]>$a[$j+1]){
                    $temp = $a[$j];
                    $a[$j] = $a[$j+1];
                    $a[$j+1] = $temp;
                }
                else{
                    //不做处理
                }
            }
        }
        return $a;
    } 

    $a = array(1,4,0,23,3,4,0,5,6,0,7,8,76,32,3,45,6,7,89,65,4,3,2,1,1,1,1,12,3,0,-1);
    $n = count($a);
    echo "排序前:";
    for($i=0; $i<$n; $i++){
        echo $a[$i];
        echo ", ";
    }
    echo "</br >";

    echo "排序后:";
    $b = BubbleSort($a);
    for($i=0; $i<$n; $i++){
        echo $b[$i];
        echo ", ";
    }
?>


运行结果:

1 0
原创粉丝点击