算法 之 冒泡排序法

不会算法的php程序员不是好程序员~

冒泡排序法:有n个数,第一次排序将最小的(或者最大的)排到最右边,通过由最左开始到最右边的数两两比较。同理,第二次将n-1个数的最小的(或者最大的)排到倒数第二个位置。以此类推。

关键点:相邻两个数的两两比较

时间复杂度:O(n^2)

上代码:

  $a = array(3,8,1,5,7,2,6,4);
    for($j = count($a) ; $j > 1 ; $j--){
        for($i = 0 ; $i < $j-1 ; $i++){
            if($a[$i] > $a[$i+1]){
                $t = $a[$i];
                $a[$i] = $a[$i+1];
                $a[$i+1] = $t;
            }
        }
    }

    print_r($a);
时间: 2024-08-04 00:59:20

算法 之 冒泡排序法的相关文章

java算法之冒泡排序法

N个数字要排序完成,总共进行N-1趟排序,每第 i 趟的排序次数为 (N-i) 次,所以 可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即   for(inti=0;i<arr.length-1;i++){         for(intj=0;j<arr.length-1-i;j++){         } } 冒泡排序法 口诀: 外层循环 0到n-1 //控制比较轮数 n 表示元素的个数 内层循环 0到n-i-1 //控制每一轮比较次数 两两比较做交换   冒泡排序的优

【算法】冒泡排序法

/// <summary> /// 冒泡法排序 /// </summary> /// <param name="shuzu"></param> private static void MySort(int[] shuzu) { //比较多少轮 for (int i = 0; i < shuzu.Length - 1; i++) { //每一轮比较多少次 for(int j=shuzu.Length-1;j>i;j--) { i

算法大神之路----排序(冒泡排序法)

冒泡排序法 冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变.气泡在水底时,水压最大,气泡最小,而气泡慢慢浮上水面时,气泡所受压力最小,体积慢慢变大. 冒泡排序比较方式是从第一个元素开始,比较相邻的元素大小,如果大小顺序有误,则对调后进行下一个元素比较.直到所有元素满足关系为止. 冒泡排序法分析 冒泡排序法平均情况下,需要比较(n-1)/2次,时间复杂度为O(n2),最好的情况只需要扫描一次,不用操作,即作n-1次比较,时间复杂度为O(n). 由于冒泡排序为相邻两

算法之旅 | 冒泡排序法

冒泡排序法 HTML5学堂-码匠:本期继续走入算法 -- 冒泡排序法.冒泡排序算法相对简单,容易上手,稳定性也比较高, 算是一种较好理解的算法,也是面试官高频提问的算法之一. Tips:关于"算法"及"排序"的基础知识,在此前"选择排序法"中已详细讲解,可点击文后的相关文章链接查看,在此不再赘述. 冒泡排序法的原理 基本原理 从序列头部开始遍历,两两比较,如果前者比后者大,则交换位置,直到最后将最大的数(本次排序最大的数)交换到无序序列的尾部,从

1)①排序算法之交换排序[1]冒泡排序法

1 #include "iostream" 2 using namespace std; 3 4 //************冒泡排序法********* 5 int bubble_sort(int n,int array[100]){ 6 bool exchange; 7 int i,j,temp; 8 i=1; 9 do{ 10 exchange=false; 11 for(j=n-1;j>=i;j--){ 12 if(array[j]<array[j-1]){ 13

php 四种基础的算法 ---- 冒泡排序法

1. 冒泡排序法  *     思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来.  *     比如:2,4,1    // 第一次 冒出的泡是4  *                2,1,4   // 第二次 冒出的泡是 2  *                1,2,4   // 最后就变成这样 代码: $arr=array(1,43,54,62,21,66,32,78,36,76,39);  function getpao($arr){    $len=count

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

冒泡排序法与二分查找法

冒泡排序(Bubble Sort) 是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名. 算法原理 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该

【算法分析】冒泡排序法

今天突然心血来潮了,想开始看算法了,立此博文,开始对算法系列开始完善,争取每周两文.在分析过程中可能想法较笨,希望各位能够宽容和帮助,如果有更好的意见和建议,可随时留言批评.闲话少数,开始正文. 第一次程序 // 通过一次循环将数组中第一个数安排到数组中比它小的数之前 for (int i = 0; i < test.Length - 1; i++) // 此处不能为test.Length,数组溢出.说明从头到尾交换的最大次数 = 数组元素个数 - 1 { if (test[i] < test