PHP冒泡排序法

冒泡排序法是一种很基础的排序方法,也是面试题中经常问到的一道题目.今天做了一下简单的分析,具体代码和思路如下

 1 <?php
 2
 3     /*思路:
 4      *按照元素顺序循环比较,
 5      * 当前元素为$array[$i],取后面的元素与
 6      * $array[$i]比较,所以应该从第$j($j=$i+1)个元素开始比较;
 7      *
 8      *比较$array[$i]和$array[$j]的大小,将较大的元素放到前面,所以要使用中间变量$tmp
 9      *过渡
10      *
11      *因为$i次循环后,只能保证$array[$i]前面的元素比$array[$i]大,并且按照从大到小的顺序排列,在它后面的
12      *元素不能保证是按照同样的顺序排列,所以要比较(count($array)-1)次,自己不和
13      *自己比较
14      */
15 $array = array(12,45,877,35,545,87,32,2,48,966,252);
16 $num = count($array);
17 for($i=0;$i<$num-1;$i++){
18     for($j=$i+1;$j<$num;$j++){
19         if($array[$i]<$array[$j]){
20             $tmp = $array[$i];
21             $array[$i] = $array[$j];
22             $array[$j] = $tmp;
23         }
24     }
25 }
26 //排序后下后结果:Array ( [0] => 966 [1] => 877 [2] => 545 [3] => 252 [4] => 87 [5] => 48
27 //[6] => 45 [7] => 35 [8] => 32 [9] => 12 [10] => 2 )
28 print_r($array);

  

时间: 2024-10-10 01:05:15

PHP冒泡排序法的相关文章

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

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

PHP 冒泡排序法

1 <?php 2 // 冒泡排序法:将一个数组中的值按照从小到大的顺 序排序 3 $arr = array(1, 4, 5, 2, 3, 7, 9, 8); 4 $len = count($arr); 5 $len2= $len - 1; 6 for ($i = 0; $i < $len; $i++) 7 { 8 for ($j = 0; $j < $len2; $j++) 9 { 10 if ($arr[$j] > $arr[$j + 1]) // 比较当前的与下一个的大小 1

关于Java中的选择排序法和冒泡排序法

一,这种方法是直接传入一个数组进行排序(选择排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if(arr[j]<arr[i]){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } 二,这种事传入一个数组和一个数组个数(选择排序

C#冒泡排序法学习

一,冒泡排序法理解:就是将一个集合里的数据当前位置和后一位比较,然当前位置大于后一位,则两个位置替换,直到排序完成 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MaoPao { class Program { static void Sort(int[] sArray) { bool sw = true; do { sw = false; for (

【算法分析】冒泡排序法

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

C#冒泡排序法及优化

冒泡排序法及优化: static void Main(string[] args) { int[] sums = { 20, 2, 1, 26, 27, 28 }; int compareCount = 0; //冒泡排序法 for (int i = 0; i < sums.Length - 1; i++) //总共要比较的趟数 { for (int j = 0; j < sums.Length - 1 - i; j++) //每趟中要比较的次数 { if (sums[j] > sums

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

算法之旅 | 冒泡排序法

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

一、冒泡排序法对随机生成的十个数按升序进行排序

//运用冒泡排序法对随机生成的十个数按升序进行排序 //首先分析我们用冒泡排序法对这十个数排序,即用第一个数跟第二个数比较,然后将大的放到后面,接着跟第三个比较...... //我们定义一个数组名arrInt[],长度为10,定义一个变量i来记录是第几个数 int i = 0; int j = 1; int t = 0;//定义一个空位置交换时使用 int[] arrInt=new int[10];//定义一个长度为10的数组 Random rd=new Random(); Console.Wr