冒泡排序是什么

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法,它的复杂度为O(n²),这个算法属于大学课本上的基础知识。

它需要重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A、时间从早到晚)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也代表着该元素列已经排序完成了。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

冒泡排序的原理

1.首先是对相邻两个元素的比较,如果第一个比第二个大,就把他们俩的位置交换一下。

2.重复的对每一对相邻元素做上述操作,直到最后一对。于是最大的一个数就会排到最后。

3.针对出所有的元素重复上面两个步骤,但每次要排除最后一个已经排好序的那个元素。

4.如此重复,元素会越来越少,最终没有任何一堆数字需要比较。

冒泡排序实现

/***冒泡排序*/// 定义数组
int[] array = new int[]{22, 15, 66, 8, 32, 1, 54, 21, 11,6,48,3,34,12};
// 定义一个临时变量
int temp = 0;
// 外层循环控制数组排序共需要循环多少次(每次相邻的两个元素进行比较,只需要比较数组总元素个数-1次)
for (int i = 0; i < array.length - 1; i++) {
// 内层循环控制第i次排序需比较多少次
//(例如:第一次排序后会确定数组中最大的一个数,且不再参与比较。第二次再确定一个除最大数以外较大的数。以此类推)
// 所以每次循环(数组的长度-i-1)次数即可。
// 不可以使用(数组的长度-j-1),会导致循环提前结束而不计算数组中剩余元素的比较
for (int j = 0; j < array.length - i - 1; j++) {
// 相邻的两个元素进行比较,将较大的元素赋值给临时变量,从而实现换位操作
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
// 遍历排序后数组中的元素
for (int k = 0; k < array.length; k++) {
System.out.println(array[k]);
}

我们执行代码后,控制台按顺序输出了这些数字:

Java字母排列 java字母排序算法_Java字母排列

简单的冒泡排序,到这里就演示完了。