- 排序是将一串数据按照其某个或者某些关键字的大小进行递增或递减排列的操作我,通常指的排序是升序,排序方式是原地排序
- 下面介绍下冒泡排序
冒泡排序
- 原理:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序
- 冒泡排序是一个稳定的排序
实现方式
public void bubbleSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
//定义标志位来判断待排序区间是否有序
boolean isSorted = true;
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j + 1);
//只要发生交换说明待排序区间初始并不是有序
isSorted = false;
}
}
if(isSorted) {
break;
}
}
}
private void swap(int[] array, int i, int j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
性能分析
- 时间复杂度:
- 最好的情况:待排序有序时,时间复杂度为O(N)
- 最坏的情况:待排序逆序时,时间复杂度为O(N^2)
- 平均情况:时间复杂度 为O(N^2)
- 空间复杂度:O(1)
- 稳定性:稳定
- 初始数据越接近有序,时间效率越高
来源:51CTO
作者:ywb_4185
链接:https://blog.51cto.com/14233687/2472021