不废话上代码:
public static int[] bobleSort(int[] arr) {
for(int i = 0; i<arr.length;i++) {
for(int j = 0 ;j<arr.length-i-1;j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
printArray(arr);
System.out.println(“第几次排序”+ i);
}
return arr;
}
public static void printArray(int[] arr) {
for(Integer item : arr) {
System.out.print(item+” “);
}
}
public static void main(String[] agrs) {
int[] arr = new int[] {23,43,45,21,32,67,21,90};
printArray(arr);
System.out.println(“最初顺序”);
int[] boor=bobleSort(arr);
printArray(boor);
System.out.println(“最后结果”);
}
执行结果:
23 43 45 21 32 67 21 90 最初顺序
23 43 21 32 45 21 67 90 第几次排序0
23 21 32 43 21 45 67 90 第几次排序1
21 23 32 21 43 45 67 90 第几次排序2
21 23 21 32 43 45 67 90 第几次排序3
21 21 23 32 43 45 67 90 第几次排序4
21 21 23 32 43 45 67 90 第几次排序5
21 21 23 32 43 45 67 90 第几次排序6
21 21 23 32 43 45 67 90 第几次排序7
21 21 23 32 43 45 67 90 最后结果
————————————————
我们先来看看冒泡排序的算法是如何定义的:
冒泡算法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
Java编码实现
了解了冒泡排序的基本定义之后,根据其思想我们来根据题主的要求看看如何用Java实现冒泡排序算法,代码如下图:
基本原理就是如下的逻辑走向:
执行后输出如下:
有没有发现什么问题?是不是到了第6次已经完成排序了?后面的是不是就属于浪费了?所以我们需要优化一下,当他的顺序已经排序完毕了就不再进行排序了,优化后的代码如下:
执行后输出:
可以看出来只执行了6次排序。
算法复杂度
那么冒泡算法的复杂度是怎样的呢?相信大家看到这已经基本上可以算出来了:
-
时间复杂度:两层循环O(n²);
-
空间复杂度:还是原来的数组,没有开辟新的内存空间,所以是O(n)。
本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/it/38301.html