一、冒泡排序
来源:互联网 发布: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 n = arrayData.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]){
temp = arrayData[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 ", ";
}
?>
运行结果:
- 排序一 冒泡排序
- 排序一 冒泡排序
- 一、冒泡排序
- 一、冒泡排序演进
- 一 冒泡排序
- 一、冒泡排序
- 排序算法《一》冒泡排序
- 排序算法一 冒泡排序
- 排序(一) 冒泡排序
- 排序算法一:冒泡排序
- 排序算法一:冒泡排序
- 排序算法一:冒泡排序
- 排序(一)冒泡排序
- Java排序一:冒泡排序
- 排序算法(一):冒泡排序
- 排序算法(一)-冒泡排序
- 排序(一):冒泡排序
- 经典排序一:冒泡排序
- 自定义View实例——下雨天画面
- 单目相机标定
- AIDL之android接口语言第一篇通信
- java 定时任务 3种
- tabhost 通过popup跳转activity
- 一、冒泡排序
- Javascript中的function函数
- 界面传值
- HDU3549 Flow Problem(最大流)
- new和malloc的地址分配问题
- 使用GitHub Pages + Hexo 快速搭建个性化博客(二)-购买并解析域名
- powerfoul vim : gg=G - make all text reformat; like alt + f8 in vc
- com.mchange.v2.resourcepool.CannotAcquireResourceException
- error opening trace file: No such file or directory (2)报错原因