@Den4_x

Почему алгоритм сортировки работает не так, если я вызываю его через метод?

package WorkSpace;
import Edition.Array;
import java.util.*;



public class WorkSpace { 
    public static void main(String args[]){
        
        Scanner scan = new Scanner(System.in);
        System.out.print("кол-во эл-ов массива: ");
        int scan_Number = scan.nextInt(); 
        
        int[] box1 = new int[scan_Number];        
        
        Array.array_Add(box1);     
        
        Array.array_Sort(box1);
        
    }
}


а сл-ий код из другой папки, но проблема не в модификаторах, т. к. он все видеит. просто когда я делаю через метод, то все плохо, а если я пишу все в main(), то все хорошо.
package Edition;


public class Array{
    //СОРТИРОВКА массива
    public static void array_Sort(int[] array){
        
        boolean bool = false;        
        while (!bool){
            for(int i=0;i<array.length-1;i++){
                bool = true;
                if(array[i]>array[i+1]){                    
                    bool=false;                    
                    int tmp = array[i];
                    array[i]=array[i+1];
                    array[i+1]=tmp;
                }
            }                
        } 
        //ВЫВОД массива
        for(int i: array){
            System.out.print(i+" ");
        }
        System.out.println();
    }
        
        //ЗАПИСЬ массива
    public static void array_Add(int[] array){        
        for(int i = 0; i<array.length;i++){
            array[i]=(int)(Math.random()*(9+1)+1);                      
        }
        
        for(int i: array){
            System.out.print(i+" ");
        }
        System.out.println();
    }
}
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
Потому что вы пытаетесь реализовать линейный алгоритм сортировки за O(n), что в принципе невозможно.

Для пузырька нужен второй цикл внутри первого.

А иногда он срабатывает, потому что так пожелал рандом и сгенерировал вам последовательность с подходящим числом инверсий.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы