首页 > 其他分享 >冒泡排序

冒泡排序

时间:2022-10-29 14:26:07浏览次数:52  
标签:arr return int 冒泡排序 length arr2 arr1

package class01;

import java.util.Arrays;

/**
 * 冒泡排序
 * 概述:每相邻的2个数比较,较大的数向后交换。排到最后一个位置时,它就是整个数组的最大值,第一轮结束。
 * 继续从第0位置和第1位置的2个数比较。周而复始。
 */
public class Code02_BubbleSort {

    public static void bubbleSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

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

    public static void printArr(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static int[] generateRandomArr(int maxValue, int maxLength) {
        int[] arr = new int[(int) (Math.random() * maxLength)];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * maxValue);
        }
        return arr;
    }

    public static int[] copyArr(int[] arr1) {
        int[] arr2 = new int[arr1.length];
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
        return arr2;
    }

    public static void main(String[] args) {
        int maxValue = 100;
        int maxLen = 10;
        int testTimes = 10;
        for (int i = 0; i < testTimes; i++) {
            int[] arr1 = generateRandomArr(maxValue, maxLen);
            int[] arr2 = copyArr(arr1);
            int[] arr3 = copyArr(arr1);
            Arrays.sort(arr2);
            bubbleSort(arr1);
            boolean equals = isEquals(arr1, arr2);
            if (!equals) {
                System.out.println("oops!");
                System.out.println("arr1 = " + Arrays.toString(arr1));//自己实现的冒泡排序。
                System.out.println("arr2 = " + Arrays.toString(arr2));//工具类排好序的。
                System.out.println("arr3 = " + Arrays.toString(arr3));//原数组,还没有排序。
                return;
            }
        }
        System.out.println("nice!");
    }

    private static boolean isEquals(int[] arr1, int[] arr2) {
        if (arr1 == null && arr2 != null) {
            return false;
        }
        if (arr2 == null && arr1 != null) {
            return false;
        }
        if (arr1 == null && arr2 == null) {
            return true;
        }
        if (arr1.length != arr2.length) {
            return false;
        }
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] != arr2[i]) {
                return false;
            }
        }
        return true;
    }
}

 

标签:arr,return,int,冒泡排序,length,arr2,arr1
From: https://www.cnblogs.com/TheFloorIsNotTooHot/p/16838625.html

相关文章

  • 冒泡排序
    算法详解以从小到大排序为例,冒泡排序法的思路是:遍历原始数据,从第一个数开始,到倒数第二个数结束,比较这个数和下一个数的大小,如果这个数比下一个数大,则交换这两个数。这样便......
  • 大数据基础之java常用API二(数组元素排序,冒泡排序、Arrays类,包装类,Date类)
    (大数据基础之常用API二)1.数组元素排序1.1冒泡排序图解代码演示publicstaticvoidmain(String[]args){int[]arr={25,69,80,57,13};//遍......
  • 数据结构【c语言版】八大算法(上)图文详解带你快速掌握——希尔排序,堆排序,插入排序,选择
    数据结构之八大算法详解(1)——希尔排序,堆排序,插入排序,选择排序,冒泡排序!插入排序基本思想把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所......
  • 冒泡排序详解
    冒泡排序分析详细节情版importrandomdefbubble(li):foriinrange(len(li)-1):exchange=Falseforjinrange(len(li)-i-1):``......
  • 冒泡排序
    #include<stdio.h>void_sum(intarr[],intsz)//冒泡排序{ inti=0; for(i=0;i<sz-1;i++)//排序的趟数 { intj=0; intflag=1; for(j=0;......
  • Demo46_冒泡排序01
    //冒泡排序packagecom.HuanXin.array_6;publicclassDemo08_01{publicstaticvoidmain(String[]args){int[]QQ={1,4,5,6,78,9};int[]aa=AA......
  • c语言冒泡排序法代码(c语言冒泡排序法代码讲解)
    求一个C语言冒泡排序法的简单程序怎么办?  下一趟排序开始时,R[1。。lastExchange-1]是有序区,R[lastExchange。。n]是无序区。这样,一趟排序可能使当前有序区扩充多个记录,从......
  • CF 1677D(Tokitsukaze and Permutations-冒泡排序)
    已知长度为n的排列,经过k次冒泡(每次把最大的数交换到最后)后,得到的新序列为.现在已知的某些地方的值,不知道的记,求合法原排列数。考虑和排列达成双射关系。且1次冒泡会导致......
  • Demo45_冒泡排序
    packagecom.HuanXin.CeShi;importjava.util.Arrays;publicclassD{publicstaticvoidmain(String[]args){int[]AA={1,3,5,8};//11-1=10......
  • 逻辑知识:冒泡排序算法
     前言在软件开发中,冒泡排序对于一些软件开发工程师很常用,而且它也是一种比较经典的算法之一,那么本节就来说说这个冒泡排序。冒泡排序概念冒泡排序(BubbleSort),是一种计算......