【问题标题】:Error With Array Sorting with BubbleSort in JavaJava中使用冒泡排序的数组排序错误
【发布时间】:2012-01-17 06:29:26
【问题描述】:

我正在尝试创建一个数组,其“总”数量在最小值和最大值之间。然后,使用冒泡排序对它们进行排序。当我执行时,我得到全零。有人能找出问题所在吗?我们将不胜感激。

import java.util.*;
import java.util.Random;

public class final_project 
{ 
    public static void main(String[] args) 
    { 
        int numbers[]; 
        int i, min, max, total; 
        int num;
        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter a minimum random value");
        min = scan.nextInt();
        System.out.println("Please enter a maximum random value");
        max = scan.nextInt();
        System.out.println("Please enter the amount of random numbers");
        total = scan.nextInt();

        numbers = new int[total];


        i = 0;
        total = 0;
        while ( i < total )
        {
            num = min + (int)(Math.random()*max);;
            numbers[i] = num;  
            total += num; 

            i += 1; /* i = i + 1; */
        }


        bubbleSort(numbers, numbers.length); 
        System.out.println("Your Sorted Array Is: "); 
        for(i=0; i<numbers.length; i++) 
        { 
            System.out.print(numbers[i] + " "); 
        } 

    }



    private static void bubbleSort(int[] numbers, int length) 
    { 
        int temp, counter, index; 

        for(counter=0; counter<length-1; counter++) 
        { 
            for(index=0; index<length-1-counter; index++) 
            { 
                if(numbers[index] > numbers[index+1]) 
                { 
                    temp = numbers[index]; 
                    numbers[index] = numbers[index+1]; 
                    numbers[index+1] = temp; 
                } 
            } 
        } 
    } 
}

【问题讨论】:

  • 您是否尝试打印未排序的数组?结果看起来正确吗?
  • 应该是num = min + (int)(Math.random()*(max-min));并删除total = 0

标签: java sorting bubble-sort


【解决方案1】:

改变

while ( i < total )

while ( i < numbers.length )

【讨论】:

  • 非常感谢。我不知道为什么我无法捕捉到那个简单的错误。你是天赐之物。
【解决方案2】:

你的循环没有执行:

        i = 0;
        total = 0;
        while ( i < total )
            ...

您也不想增加total。将循环替换为:

        for(int i = 0; i < numbers.length; ++i)
        {
             numbers[i] = num;  
        }

【讨论】:

  • 糟糕,你能帮我看看如何执行它吗?
【解决方案3】:

您应该考虑使用 for 循环而不是 while 循环。 for 循环非常适合遍历数组。

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2014-06-03
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多