算法-冒泡法排序

2022-3-31 diaba 算法

package com.jiucaiyuan.net.algrithm.sort;

/**
 * 冒泡法排序
 *  循环待排序数组,如果前面数比后面数大,交换, 循环完一次最后一位是最大数,下次处理0~N-2个数
 * 排序结果是升序数组
 * 时间复杂度O(N^2)    空间复杂度O(1)
 *
 * @Author jiucaiyuan  2022/3/25 21:48
 * @mail services@jiucaiyuan.net
 */

public class BubbleSort {

    public static void bubbleSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        //每次循环时处理到哪个元素截止
        for (int i = arr.length - 1; i > 0; i--) {
            //从头至i循环,循环完毕i位置是0~i最大的
            for (int j = 0; j < i; j++) {
                //如果前面的数比后面的大,换位置
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {1,2,8,3,5,7,2,7,8,12,4};
        bubbleSort(arr);
        print(arr);
    }

    private static void print(int[] arr) {
        if(arr == null ){
            return;
        }
        for(int a : arr){
            System.out.print(a+"\t");
        }
        System.out.println();
    }
}

发表评论:

Powered by emlog 京ICP备15045175号-1 Copyright © 2022