排序算法传送:
排序算法——java实现冒泡排序
排序算法——java实现选择排序
排序算法——java实现直接插入排序
排序算法——java实现二分法排序
排序算法——java实现希尔排序
排序算法——java实现快速排序
冒泡排序
1.算法思想:
类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。实现步骤:
(1)两两比较(第一个数跟第二个数比较,第二个数跟第三个数比较,知道倒数第二个数跟倒数第一个数比较完),如果前者比后者大则交换位置。
(2)第一趟最后一个数肯定是最大的数。
(3)第二趟将第二大的数移动至倒数第二位。
(4)第三趟将第三大的数移动至倒数第三位。
(5)因此循环n-1次才能将顺序排好。
2.代码实现:
private int[] array = {23, 11, 7, 29, 33, 59, 8, 20, 9, 3, 2, 6, 10, 44, 83, 28, 5, 1, 0, 36};
/**
* 冒泡排序:两两比较,大者交换位置,则每一圈比较最大的数就会冒到最后,循环直至遍历完所有
*/
private void bubbleSort() {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
3.复杂度:
- 时间复杂度O(n²)
- 空间复杂度: O(1)
- 稳定性:稳定