#青训营 x 字节后端训练营#
冒泡排序
思想:两两比较相邻位置大小,若逆序,则交换位置,直到交换末尾为一趟,共交换n-1趟...
过程
- 升序排序时,比较相邻的两个数据,如果第二个数小,就交换位置。
- 从前向后两两比较,一直到比较最后两个数据。最终最大数会被交换到到后一个位置,这就完成了一趟排序。一共会进行n-1趟排序,且注意每次排序好的元素下一次不再进行排序。
- 继续重复上述过程,依次将第2.3...n-1个最小数排好位置。
特点:
- 每趟排序都会有一个元素落在最终位置
- 稳定
实现代码
//从前往后排
for (int i = 0; i < arrays.length - 1; i++) {//n个数排序,只要n-1趟
for (int j = 0; j < arrays.length - 1 - i; j++) {//因为有j+1,所以下标写到n-1-i
int temp;
if (arrays[j] > arrays[j + 1]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
}
}
}
时间复杂度O(n)