Ошибка сортировки массива с помощью BubbleSort в Java - PullRequest
2 голосов
/ 10 декабря 2011

Я пытаюсь создать массив с «общим» количеством чисел от мин до макс. А затем сортируйте их, используя пузырьковую сортировку. Когда я выполняю, я получаю все нули. Может кто-то найти, что идет не так? Был бы признателен за быстрый ответ.

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

Ответы [ 3 ]

0 голосов
/ 10 декабря 2011

Вы должны рассмотреть возможность использования цикла for вместо цикла while. Цикл for идеально подходит для итерации массива.

0 голосов
/ 10 декабря 2011

Изменение

while ( i < total )

до

while ( i < numbers.length )
0 голосов
/ 10 декабря 2011

Ваш цикл не выполняется:

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

Также вы не хотите увеличивать total.Замените ваш цикл:

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