簡體   English   中英

Java 我如何重復排序直到在冒泡排序中沒有進行交換?

[英]Java How do i repeat sort until no swaps are done in bubblesort?

我正在使用 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) );
           }    
        
        }
        
    } ```

這是我的實現:

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));
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM