`
flyer2010
  • 浏览: 358836 次
  • 性别: 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;
		}
	}
分享到:
评论

相关推荐

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

    本实验旨在深入理解并掌握一种典型的交换排序算法——冒泡排序,通过对其实现和优化,计算在特定数据集上执行排序所需的最少交换次数,从而深化对算法效率和复杂性的认识。 #### 冒泡排序原理与特性 冒泡排序是一...

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

    冒泡排序是一种简单的排序算法,其基本思想是通过重复地遍历要排序的列表,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复进行的,直到没有再需要交换的元素,也就是说该列表已经...

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

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

    选择排序-插入排序-快速排序-冒泡排序

    - 冒泡排序是最简单的排序算法之一,通过不断地交换相邻的逆序元素来逐步将大的元素“冒”到序列的顶端。每一轮排序会确定一个最大(或最小)元素的位置。 - 冒泡排序的时间复杂度同样为O(n²),空间复杂度为O(1)...

    经典排序算法源代码-插入排序-选择排序-冒泡排序

    - 冒泡排序通过不断地交换相邻的逆序元素来逐步完成排序。每一轮遍历,最大的元素会“冒泡”到数组的末尾。这个过程会重复,直到整个数组排序完成。 - 特点:冒泡排序同样具有O(n^2)的时间复杂度,但其稳定性优于...

    C语言排序算法---冒泡排序法

    4. **交换操作**: 交换操作是冒泡排序的核心,通过比较和交换,较大的元素逐渐向数组的末尾移动。可以使用`swap()`函数,它接受两个元素的指针作为参数,然后交换它们的值。 5. **结束条件**: 每一轮内层循环结束后...

    S7-200SMART冒泡排序-优化版(可选择升序降序及数据类型等).zip

    冒泡排序是一种简单的排序算法,通过重复遍历待排序的序列,依次比较相邻元素,如果顺序错误则交换,直到遍历完整序列且无交换发生,表明序列已排序完成。其核心思想是每次比较都可能把最大的元素“浮”到序列的末尾...

    交换排序之冒泡排序.cpp

    交换排序之冒泡排序.cpp

    排序算法 -- 冒泡排序

    冒泡排序是一种基础且经典的排序算法,它的基本思想是通过不断地交换相邻的逆序元素,使得每一轮排序后,最大的元素“浮”到数组的末尾。这个过程就像水底下的气泡逐渐升至水面一样,因此得名“冒泡排序”。 在Java...

    冒泡排序-14-表单提交.ev4.rar

    在这个"冒泡排序-14-表单提交.ev4.rar"压缩包中,很可能包含了一个关于冒泡排序的示例讲解,可能是一个教学视频"冒泡排序-14-表单提交.ev4.mp4"。 冒泡排序的基本思想是通过重复遍历待排序的数列,一次比较两个元素...

    冒泡排序-时间排序

    冒泡排序是一种基础且历史悠久的排序算法,它通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,直到没有再需要交换的元素,即整个数列完成排序。这个过程就像水底下的气泡一样逐渐...

    冒泡排序---选择,插入和快速排序

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

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

    根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....

    python冒泡排序-16-集合总结.ev4.rar

    标题中的“python冒泡排序-16-集合总结”表明这是一个关于Python编程的教程,具体聚焦于冒泡排序算法和集合的综合应用。冒泡排序是计算机科学中最基础的排序算法之一,而集合在Python中则是一种无序、不重复元素序列...

    冒泡排序-使用python实现的冒泡排序算法.zip

    冒泡排序是一种基础且经典的排序算法,它的基本思想是通过不断地交换相邻的逆序元素,使得每一趟排序后,最大的元素“浮”到数组的末尾。在这个过程中,就像水底下的气泡逐渐上浮一样,因此得名“冒泡排序”。在...

    TIA博途-冒泡排序SCL算法-全局FC库文件-V15版本.zip

    冒泡排序是一种简单的排序算法,它重复地遍历待排序的列表,比较每对相邻元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复进行直到没有再需要交换,也就是说该列表已经排序完成。这个算法的名字由来...

    C语言版的排序方法---冒泡排序.docx

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

    冒泡排序-java版本

    冒泡排序是一种基础的排序算法,它通过重复遍历待排序的数组,比较相邻元素并交换位置,使得每个遍历过程都将当前未排序的最大(或最小)元素“冒泡”到数组的末尾,直到整个数组有序。在Java中实现冒泡排序,我们...

    8.12-8.19-冒泡-选择-插入-希尔-快速-归并-基数-堆排序-排序算法Swift代码及UI演示

    1. 冒泡排序(Bubble Sort):冒泡排序是最简单的排序算法之一,通过不断交换相邻的不正确顺序元素,使较大的元素逐渐“浮”到序列的末尾。它的时间复杂度为O(n^2)。 2. 选择排序(Selection Sort):选择排序每次...

Global site tag (gtag.js) - Google Analytics