写一个冒泡算法,整型数组从小到大排序

写一个冒泡算法,整型数组从小到大排序
这多次循环还是多次排序一样吗?一个循环能不能写完这个问题?

img

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] array1 =  {23,12,3,56,89,22,6,90,13,55};
        
        for(int i=0;i<array1.length;i++){
            for(int j=i+1;j<array1.length;j++){
                int temp=0;
                if(array1[i]>array1[j]){
                    temp=array1[i];
                    array1[i]=array1[j];
                    array1[j]=temp;
                }
            }
        }

        System.out.println(Arrays.toString(array1));
    }
}

一个循环肯定不行的
多次循环就是多趟排序,每一趟完成一个数的排位
相当于每次找到一个最大值放到数组尾部

冒泡排序都是两个循环来写的,一个肯定是不行的,完成这个问题的话,先对整型进行筛选,然后再进行排序

参考:

public static void bubbleSort(int[] arr) {
    int n = arr.length;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = temp;
            }
        }
    }
}
  • 多次循环和多次排序并不是一样的,多次循环是指多次遍历数组,而多次排序是指对整个数组进行多次排序;
  • 由于每一轮比较只能将一个元素放到正确的位置,因此需要多次循环来确保所有元素都被排序。一次循环是无法解决这个问题的。

冒泡排序本身就是由二重循环组成的
只写一重循环不可能完成任何一种排序,要么二重循环要么递归
至于多次排序,如果你的数组在排序好之后又有新的元素加入,就需要再次排序
否则后面的多次排序是没有效果的,并不改变位置

  • Java实现冒泡排序算法的示例代码,可以将整型数组从小到大排序:

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {3, 1, 6, 2, 9, 4, 5};
        bubbleSort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    
    public static void bubbleSort(int[] arr) {
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

  • 多次循环和多次排序不完全相同。在排序算法中,多次循环是必需的,因为需要遍历整个数组并比较相邻元素的大小,以决定是否需要交换它们的位置。而排序是在每次循环中执行的操作之一,目的是将最大或最小的元素移动到正确的位置上。因此,多次循环是必需的,而多次排序可能不是必需的。如果在某一次循环中没有发生任何交换,那么数组已经是有序的,我们就不需要再进行下一轮循环了,这样可以节省一些时间。然而,冒泡排序算法需要进行多次循环来确保所有元素都被比较并排序,因此不能仅使用一次循环来解决问题。
  • 这篇博客: 排序算法问题(一)中的 (假设从小到大排序) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 每次循环将子序列中最小的数放在第一位;将问题逐渐变为n-1个数比较大小的问题(递归思想);这种排序属于确定位置找最小元素的问题。
    在这里插入图片描述
    在这里插入图片描述