茂港手机网站建设公司,视频网站怎么做的,微信平台的微网站怎么做的,wordpress支付下载插件目录 一、简介二、代码实现三、应用场景 一、简介
算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性冒泡排序O(n^2 )O(n)O(n^2)O(1)In-place稳定 稳定#xff1a;如果A原本在B前面#xff0c;而AB#xff0c;排序之后A仍然在B的前面#xff1b; 不… 目录 一、简介二、代码实现三、应用场景 一、简介
算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性冒泡排序O(n^2 )O(n)O(n^2)O(1)In-place稳定 稳定如果A原本在B前面而AB排序之后A仍然在B的前面 不稳定如果A原本在B的前面而AB排序之后A可能会出现在B的后面 时间复杂度 描述一个算法执行所耗费的时间 空间复杂度描述一个算法执行所需内存的大小 n数据规模 k“桶”的个数 In-place占用常数内存不占用额外内存 Out-place占用额外内存。 算法步驟 比较相邻的元素如果第一个比第二个大就交换它们两个 对每一对相邻元素作同样的比较从开始第一对到结尾的最后一对这样在最后的元素就是最大的数 针对所有的元素重复以上的步骤除了数组最后已经排好序的数组 重复步骤1~3直到排序完成。 二、代码实现
public class BubbleSort {/*** flag的作用flag是对冒泡排序算法的优化每次内循环结束都会将长度为N-i-1数组中最大的元素交换到最后面* 当内循环结束没有发生数据的交换说明数组已经是有序的了此时flagfalse退出循环。* param arr*/public static void bubbleSort(int[] arr) {int len arr.length;for (int i 0; i len - 1; i) {boolean flag true;for (int j 0; j len - i - 1; j) {if (arr[j] arr[j 1]) {int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;flag false;}}if (flag) {break;}}}public static void bubbleSortBack(int[] arr) {int len arr.length;for (int i 0; i len - 1; i) {boolean flag true;for (int j 0; j len - i - 1; j) {if (arr[j] arr[j 1]) {int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;flag false;}}if (flag) {break;}}}public static void main(String[] args) {int[] arr {12, 11, 15, 50, 7, 65, 3, 99};System.out.println(---排序前: Arrays.toString(arr));bubbleSort(arr);System.out.println(从小到大排序后: Arrays.toString(arr));bubbleSortBack(arr);System.out.println(从大到小排序后: Arrays.toString(arr));}
}三、应用场景
冒泡排序在实际工程中使用较少但在教学、学习和特定场景下仍然具有一定的应用价值。对于大规模数据集的排序通常会选择更高效的排序算法如快速排序、归并排序等。
参考链接 十大经典排序算法Java实现