冒泡排序算法之JAVA实现
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
解决的是排序问题:
输入:一个待排序的数组
输出:排好序的数组
算法思想:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。(这是百度的定义)
算法复杂度:O(n²)
简单来说:冒泡排序就是用多次遍历比较相邻元素的大小,把大的往后放,第一轮遍历的时候就能找到最大的那个元素,并把最大的元素放到数组最后一位,第二次遍历找到第二大的元素,放到倒数第二位,以此类推把数组顺序排好。
话不多说,直接上代码:
package Algorithm;
import java.util.Date;
import java.util.Random;
/**
* 冒泡排序算法示例
*/
public class BubbleSort {
/**
* 冒泡排序核心算法
* 算法思想:
* 用多次遍历比较相邻元素的大小,把大的往后放,第一轮遍历找出了最大的那个元素,并放在了数组最后一位,第二轮把第二大的元素放在倒数第二位
*算法复杂度为:O(n²)
* @param arr
* @return
*/
public static int[] bubbleSort(int arr[]){
boolean isContinue = true;
for(int i = 1; i < arr.length && isContinue; i++){
isContinue = false;
for(int k = 0; k < arr.length - i;k++){
if (arr[k] > arr[k+1]){
int currentElement = arr[k];
arr[k] = arr[k+1];
arr[k+1] = currentElement;
isContinue = true;
}
}
}
return arr;
}
/**
* 生成随机数组,传入数组个数和最大的元素值
* @param n
* @param maxNum
* @return
*/
public static int[] initArray(int n,int maxNum){
int[] arr = new int[n];
Random rand = new Random();
for(int i = 0; i<n;i++){
arr[i] = rand.nextInt(maxNum);
}
return arr;
};
//主方法,执行排序
public static void main(String args[]){
//初始化一个大小为10数组,元素大小在100之内
int[] arr = initArray(10,100);
// 打印新生成的数组
for(int i :arr){
System.out.print(i + " ");
}
System.out.println();
arr = bubbleSort(arr);
// 打印排序好的数组
for(int i :arr)
System.out.print(i + " ");
}
}
其中做一些解释
来,让我们测试一下
如果对其他排序感兴趣,欢迎看我博客里面其它关于排序算法的文章
分享一个我的公众号:JavaUp
希望能和大家一起学习和交流。