冒泡排序
冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
中文名 | 外文名 | 时间复杂度 | 实质 |
---|---|---|---|
冒泡排序 | Bubble Sort | O(n²) | 把小(大)的元素往前(后)调 |
/**
* 冒泡排序
*/
// 定义数组
int[] array = new int[]{5, 3, 1, 6, 2, 19, 7, 88, 32};
// 定义并初始化一个int类型的临时变量
int temporary = 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]) {
temporary = array[j];
array[j] = array[j + 1];
array[j + 1] = temporary;
}
}
}
// 遍历排序后数组中的元素
for (int k = 0; k < array.length; k++) {
System.out.println(array[k]);
}
}
}
控制台输出:
本文来自博客园,作者:Schieber,转载请注明原文链接:https://www.cnblogs.com/xiqingbo/p/java-07.html