排序算法--冒泡排序--java实现

冒泡排序算法之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

希望能和大家一起学习和交流。

猜你喜欢

转载自blog.csdn.net/aa792978017/article/details/82846890