【问题标题】:Java Bubble Sort Algorithm ImplementationJava 冒泡排序算法实现
【发布时间】:2016-12-11 20:13:37
【问题描述】:

我正在尝试在我的代码中实现冒泡排序算法,以使输出按升序显示。下面是我的代码,后面是我在 JGrasp 中收到的错误。任何建议或指示将不胜感激。

import java.util.*;

public class RandomArray
{
   public static void main(String[] args)
   {
      Scanner input = new Scanner(System.in);
      System.out.println("Please enter the number 15 to generate 15 random numbers!");
      int randomIn = input.nextInt();
      int[] randomNumbers = new int[randomIn];
      if(randomIn != 15)
      {
         System.out.println("The number you entered was not 15. Please run the program again and enter 15...");
      }
      else if(randomIn == 15)
      {
         for(int x = 0; x < randomNumbers.length; ++x)
         {
            randomNumbers[x] = (int) (Math.random()*50);
            System.out.println("Your randomly generated numbers are: " + randomNumbers[x]);
         }
      }

   }
   public static void bubbleSort(int[] randomNumbers)
      {
         int n = randomNumbs.length;
         int temp = 0;
         for(int i = 0; i < n; i++)
            {
               for(int j = 1; j < (n - 1); j++)
               {
                  if(randomNumbers[j-1] > randomNumbers[j])
                     {
                        temp = randomNumbers[j - 1];
                        randomNumbers[j - 1] = randomNumbers[j];
                        randomNumbers[j] = temp;
                        for(int i=0); i<randomNumbers.length; i++)
                        {
                           System.out.print(randomNumbers[i] + " ");
                        }
                     } 
               }
            }
      }


}

我收到的错误是:

----jGRASP exec: javac -g RandomArray.java
RandomArray.java:38: error: ';' expected
                        for(int i=0); i<randomNumbers.length; i++)
                                   ^
RandomArray.java:38: error: not a statement
                        for(int i=0); i<randomNumbers.length; i++)
                                       ^
RandomArray.java:38: error: ')' expected
                        for(int i=0); i<randomNumbers.length; i++)
                                                            ^
RandomArray.java:38: error: ';' expected
                        for(int i=0); i<randomNumbers.length; i++)
                                                                 ^
4 errors

 ----jGRASP wedge2: exit code for process is 1.
 ----jGRASP: operation complete.

【问题讨论】:

  • 再检查一下,for 循环的语法是什么...

标签: java algorithm sorting bubble-sort


【解决方案1】:

这就是您实现冒泡排序的方式。我刚刚编写了返回数组的方法。 这将按升序排列您的数字:

public int []bubbleSort(int[] arr) {
      int size = arr.length;
      for (int pass = 1; pass < size; pass++) {
         for (int i = 0; i < size-pass; i++) {
            if (arr[i] > arr[i+1]) {
               int temp = arr[i];
               arr[i] = arr[i+1];
               arr[i+1] = temp;
            }
         }

      }
      return arr;
   }

【讨论】:

  • 感谢您的帮助。这就是我想要的。
  • @DontrellJohnson 如果您解决了问题,请标记正确答案。
  • 正如您所说,您希望数字按升序排序,而不是实现冒泡排序,您可以使用 Array.sort() 方法。
【解决方案2】:

我认为您想要生成 15 个随机数并按加入顺序打印它
这是代码。

import java.util.*;
public class RandomArray
{
   public static void main(String[] args)
   {
      Scanner input = new Scanner(System.in);
      System.out.println("Please enter the number 15 to generate 15 random numbers!");
      int randomIn = input.nextInt();
      int[] randomNumbers = new int[randomIn];
      if(randomIn != 15)
      {
         System.out.println("The number you entered was not 15. Please run the program again and enter 15...");
      }
      else if(randomIn == 15)
      {
         for(int x = 0; x < randomNumbers.length; ++x)
         {
            randomNumbers[x] = (int) (Math.random()*50);
            System.out.println("Your randomly generated numbers are: " + randomNumbers[x]);
         }
         bubbleSort(randomNumbers);
      }

   }
   public static void bubbleSort(int[] randomNumbers)
      {
         int n = randomNumbers.length;
         int temp = 0;
         for(int i = 0; i < n; i++)
            {
               for(int j = 1; j < (n - 1); j++)
               {
                  if(randomNumbers[j-1] > randomNumbers[j])
                     {
                        temp = randomNumbers[j - 1];
                        randomNumbers[j - 1] = randomNumbers[j];
                        randomNumbers[j] = temp;                    
                     } 
               }
            }
            for(int k=0; k<randomNumbers.length; k++)
            {
            System.out.print(randomNumbers[k] + " ");
            }
      }
}

【讨论】:

  • 感谢您的帮助。感谢您的帮助,我看到了哪里出错了。
  • @DontrellJohnson 如果我的回答对您有帮助,请点赞并接受。
猜你喜欢
  • 2013-09-04
  • 2013-02-02
  • 1970-01-01
  • 2012-07-23
  • 2017-03-11
  • 2016-03-19
  • 1970-01-01
  • 2018-04-25
相关资源
最近更新 更多