冒泡排序

原创 2012年03月26日 15:17:39

思路为相邻两个依次比较,

Step-by-step example

Let us take the array of numbers "5 1 4 2 8", and sort the array from lowest number to greatest number using bubble sort algorithm. In each step, elements written in bold are being compared. Three passes will be required.

First Pass:
( 5 1 4 2 8 ) \to ( 1 5 4 2 8 ), Here, algorithm compares the first two elements, and swaps them.
( 1 5 4 2 8 ) \to ( 1 4 5 2 8 ), Swap since 5 > 4
( 1 4 5 2 8 ) \to ( 1 4 2 5 8 ), Swap since 5 > 2
( 1 4 2 5 8 ) \to ( 1 4 2 5 8 ), Now, since these elements are already in order (8 > 5), algorithm does not swap them.
Second Pass:
( 1 4 2 5 8 ) \to ( 1 4 2 5 8 )
( 1 4 2 5 8 ) \to ( 1 2 4 5 8 ), Swap since 4 > 2
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
Now, the array is already sorted, but our algorithm does not know if it is completed. The algorithm needs one whole pass without any swap to know it is sorted.
Third Pass:
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )

代码实现如下:

public static void bubbleSort(int [] a){
		for(int i = 0;i<a.length - 1;i++){
			boolean swap = false;
			for(int j = 1;j<a.length -i ;j++){
				if(a[j-1] > a[j]){
					int temp = a[j - 1];
					a[j - 1] = a[j];
					a[j] = temp;
					swap = true;
				}		
			}
			if(swap == false){
				System.out.println("break");
				break;
			}
		}
		
		for(int i:a){
			System.out.print(i + "  ");
		}
	}


 

冒泡排序由浅入深详细分析图解

冒泡排序 * 相邻元素两两比较,大的往后放,第一次完毕后,最大值就出现在 * 最大索引处,同理,继续,即可得到一个排序好的数组 * * 规律: * 1、两两比较,大的往后放。 ...
  • starjuly
  • starjuly
  • 2016年12月25日 19:49
  • 3523

OC的冒泡排序

#import int main(int argc, const char * argv[]) { @autoreleasepool { /* 冒泡...
  • qq331429844
  • qq331429844
  • 2015年10月13日 21:04
  • 6578

java中冒泡排序,根据对象的属性,排对象

主程序排序: public class TestDmo { public static void main(String[] args) { List list=getData(); ...
  • zhaihaohao1
  • zhaihaohao1
  • 2017年06月26日 09:05
  • 186

冒泡排序的2种写法

假如有几个数字int score[] = {67, 69, 75, 88};  按照从大到小排序。 有2种思路,第一种,score[j] 和 score[j+1] 比较 如果 前者比后者小,把前者和...
  • shuaizai88
  • shuaizai88
  • 2017年06月14日 17:52
  • 2589

java将list集合冒泡排序

java将List集合进行冒泡排序。。。
  • xiaosheng_papa
  • xiaosheng_papa
  • 2015年01月05日 13:55
  • 4185

ArrayList实现冒泡排序

用ArrayList实现冒泡排序public class ArrayListSort { public static void main(String[] args) { Ar...
  • mhtqq809201
  • mhtqq809201
  • 2016年06月13日 11:31
  • 3305

例子说冒泡排序

1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3. 针对所有的元素重复以上...
  • u010927640
  • u010927640
  • 2016年03月31日 20:04
  • 4415

冒泡排序及改进(C++版)

冒泡排序:相邻两个数比较,根据大小交换位置 C++代码: /** * name:冒泡排序 * time:15/8/12 15:00 * environment: ubuntu 14.04, subli...
  • u012580566
  • u012580566
  • 2015年08月12日 16:55
  • 793

js冒泡排序原理

//----------------------简单版(冒泡排序)----------------- var arr = [7,6,5,4,3,2,1]; //需求:冒...
  • gyq04551
  • gyq04551
  • 2016年11月20日 17:16
  • 1173

php冒泡排序详解笔记

原理/* * 冒泡排序(从小到大) * 原理: 假如10个数字 * 【 * 先比较出10个数字中最大的, 剩下9个数字 * 再比较出9个数字比...
  • qq_21956483
  • qq_21956483
  • 2016年10月10日 12:35
  • 4684
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)