Java如何重复排序直到在冒泡排序中没有进行交换?

Posted

技术标签:

【中文标题】Java如何重复排序直到在冒泡排序中没有进行交换?【英文标题】:Java How do i repeat sort until no swaps are done in bubblesort? 【发布时间】:2022-01-20 23:09:57 【问题描述】:

我将选取 10 个元素并对它们进行冒泡排序。我想添加一个重复排序的算法,直到不需要交换以提高效率。 基本上我想:

重复直到没有完成一次交换 对于元素 1 到 (n-1) 将元素值 1 的内容与下一个值的内容进行比较 如果值 1 大于值 2 然后交换值

这是我到目前为止所做的:

    

        //create array
        int[] iList = new int[10];
        Scanner sc = new Scanner(System.in);

        //takes in array input for 10 numbers
        
        System.out.println("Enter a array of numbers ");

        
        for(int i = 0; i< 10; i++ ) 
        
            int num = i + 1;
            System.out.println("Enter number " + num);
            iList[i] = sc.nextInt();
            
        

        //Bubble sorts the array
        
        System.out.println("The array =");

        for(int a = 0; a < iList.length; a++ )
        
          for(int b = a+1; b < iList.length; b++) 
          
                if(iList[a] > iList[b])
                
                    int iTemp = iList[a];
                    iList[a] = iList[b];
                    iList[b] = iTemp;   
                    
                
                  System.out.println("Progress = " + Arrays.toString(iList) );
               
        
        
        
     ```

【问题讨论】:

创建一个bool 来存储它是否曾经在迭代中被交换过。 break 如果没有 在外循环的开头引入了一个boolean变量,在if里面改变那个boolean变量的值,检查这个变量在外循环结束前是否改变了。 【参考方案1】:

这是我的实现:

public static void sort(int[] nums) 
        boolean isSwapped;
        int size = nums.length - 1;

        for (int i = 0; i < size; i++) 
            isSwapped = false;
            for (int j = 0; j < size - i; j++) 
                if (nums[j] > nums[j+1]) 
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                    isSwapped = true;
                
            
            if (!isSwapped) break;
        

        System.out.println("Sorted Array: " + Arrays.toString(nums));
    

【讨论】:

以上是关于Java如何重复排序直到在冒泡排序中没有进行交换?的主要内容,如果未能解决你的问题,请参考以下文章

Java数据结构与算法之冒泡排序选择排序

Java冒泡排序

排序——冒泡排序(java描述)

Java之冒泡排序详解

java-冒泡

java基础之冒泡排序