冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
从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,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,...
交换排序 选择排序 冒泡排序 插入排序
交换排序之冒泡排序.cpp
经典排序算法,有选择排序,冒泡排序,交换排序,谢尔排序,插入排序基数排序
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 附件中是使用 ...
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这段代码首先...
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这段代码首先...
2改进的冒泡排序,在一次冒泡的过程中,如果没有发生交换,则已经有序 3进一步改进的冒泡排序,如果在某次冒泡过程中,最后一次进行交换的位置为flag,则表示flag之后的序列已经有序,那么下一次冒泡就无需比较flag...
冒泡排序详解,简单而详细的讲清楚了,什么是冒泡排序。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首...
python 冒泡排序算法 Python 冒泡排序算法 冒泡排序算法是一种简单的排序算法,它的基本思想是通过不断比较相邻的元素,将较大的元素向后移动,较小的元素向前移动,从而实现排序的目的。冒泡排序算法的时间复杂度为...
冒泡排序比较索引 0 中的元素,如果第 0 索引大于第 1 索引,则交换值,如果第 0 索引小于第 1 索引,则没有任何反应。 然后,第 1 个索引与第 2 个索引进行比较,然后第 2 个索引与第 3 个索引进行比较,依此类推...
交换排序实现源码:包括冒泡排序和快速排序的实现。
function BubbleSort(arr) { //交换排序->冒泡排序 var st = new Date(); var temp; var exchange; for(var i=0; i; i++) { exchange = false; for(var j=arr.length-2; j>=i; j--) { if((arr[j+1]) (arr[j]...
冒泡排序,或许大家都知道,但是我当初直到大二才真正的理解。下载此档,就明白了。
讲解了交换类排序的含义,并有代表:冒泡排序和快速排序的算法实现和讲解,和复杂度分析。
说一说冒泡排序 冒泡排序,作为最基本的排序算法,由于原理像冒泡一样,所以取名为冒泡排序; 我们知道,水泡在上升时,总是密度最小的最先上去,假如一个水层只能容纳一个水泡,那么水泡由上到下的排序就是密度逐渐...
6. 用JAVA实现一种排序算法!(可从键盘上输入一组数,对其排序)
//冒泡排序 for(int i=0;i;i++){ for(int j=i+1;j;j++){//注意j的开始值是i+1,因为按照排序规则,比a[i]大的值都应该在它后面 if(a[i] > a[j]){ int temp = a[j]; a[j] = a[i]; a[i] = temp; ...
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...