`
flyer2010
  • 浏览: 356237 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

交换排序---冒泡排序

阅读更多
冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
从0到n-1,两两比较数组中的元素,如果前者大于后者,则交换之(如a[0]>a[1],则交换a[0]和a[1])。作一趟冒泡排序后,
最大值就在最后一个位置a[n-1]上了。然后对余下的0到n-2个元素作第二趟冒泡排序,次最大值就去到倒数第二个位置a[n-2]上了,如此类推。

冒泡排序最好的时间复杂度O(n),就是n‐1次的比较,没有数据交换,时间复杂度为O(n)。
冒泡排序最坏的时间复杂度O(n^2),即待排序表是逆序的情况,每趟排序要进行次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置.

初始数组:
7  3  4  1  5  8

第1趟排序:
7  3  1  4  5  8
7  1  3  4  5  8
1  7  3  4  5  8

第2趟排序:
1  3  7  4  5  8

第3趟排序:
1  3  4  7  5  8

第4趟排序:
1  3  4  5  7  8

/**
	 * 冒泡排序
	 * 
	 * @param a
	 */
	public static void bubbleSort(int[] a) {
		int temp = 0;
		for (int i = a.length - 1; i > 0; --i) {
			boolean isSort = false;
			for (int j = 0; j < i; ++j) {
				if (a[j + 1] < a[j]) {
					temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
					isSort = true;
				}
			}
			if (!isSort)
				break;
		}
	}
分享到:
评论

相关推荐

    数据结构:交换排序-冒泡排序实验指导

    数据结构课程实验报告:交换排序-冒泡排序实验指导。

    冒泡排序-排序过程 冒泡排序-排序过程

    冒泡排序-排序过程 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,...

    C#四种排序方法--交换排序 选择排序 冒泡排序 插入排序

    交换排序 选择排序 冒泡排序 插入排序

    交换排序之冒泡排序.cpp

    交换排序之冒泡排序.cpp

    经典排序算法,有选择排序,冒泡排序,交换排序,谢尔排序,插入排序基数排序

    经典排序算法,有选择排序,冒泡排序,交换排序,谢尔排序,插入排序基数排序

    冒泡排序-java版本

    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 附件中是使用 ...

    冒泡排序-Java 版本

    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这段代码首先...

    冒泡排序-Java版本

    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这段代码首先...

    冒泡排序及其改进算法C语言实现 冒泡排序及其改进算法C语言实现 冒泡排序及其改进算法C语言实现

    2改进的冒泡排序,在一次冒泡的过程中,如果没有发生交换,则已经有序 3进一步改进的冒泡排序,如果在某次冒泡过程中,最后一次进行交换的位置为flag,则表示flag之后的序列已经有序,那么下一次冒泡就无需比较flag...

    java基础冒泡排序.ppt

    冒泡排序详解,简单而详细的讲清楚了,什么是冒泡排序。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首...

    python-冒泡排序算法.docx

    python 冒泡排序算法 Python 冒泡排序算法 冒泡排序算法是一种简单的排序算法,它的基本思想是通过不断比较相邻的元素,将较大的元素向后移动,较小的元素向前移动,从而实现排序的目的。冒泡排序算法的时间复杂度为...

    js冒泡排序两种排序代码

    冒泡排序比较索引 0 中的元素,如果第 0 索引大于第 1 索引,则交换值,如果第 0 索引小于第 1 索引,则没有任何反应。 然后,第 1 个索引与第 2 个索引进行比较,然后第 2 个索引与第 3 个索引进行比较,依此类推...

    交换排序实现源码

    交换排序实现源码:包括冒泡排序和快速排序的实现。

    简单数据排序--JavaScrip实现

    function BubbleSort(arr) { //交换排序-&gt;冒泡排序 var st = new Date(); var temp; var exchange; for(var i=0; i; i++) { exchange = false; for(var j=arr.length-2; j&gt;=i; j--) { if((arr[j+1]) (arr[j]...

    交换排序\冒泡排序.

    冒泡排序,或许大家都知道,但是我当初直到大二才真正的理解。下载此档,就明白了。

    交换类排序(内有经典的冒泡排序和快速排序C++代码实现)

    讲解了交换类排序的含义,并有代表:冒泡排序和快速排序的算法实现和讲解,和复杂度分析。

    c++冒泡排序详解

    说一说冒泡排序 冒泡排序,作为最基本的排序算法,由于原理像冒泡一样,所以取名为冒泡排序; 我们知道,水泡在上升时,总是密度最小的最先上去,假如一个水层只能容纳一个水泡,那么水泡由上到下的排序就是密度逐渐...

    JAVA实现冒泡排序(交换排序)

    6. 用JAVA实现一种排序算法!(可从键盘上输入一组数,对其排序)

    冒泡排序 算法(冒泡,选择,插入,数组排序)

    //冒泡排序 for(int i=0;i;i++){ for(int j=i+1;j;j++){//注意j的开始值是i+1,因为按照排序规则,比a[i]大的值都应该在它后面 if(a[i] &gt; a[j]){ int temp = a[j]; a[j] = a[i]; a[i] = temp; ...

    java基础 经典算法之冒泡排序详解

    1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...

Global site tag (gtag.js) - Google Analytics