Как использовать сортировку выделения в объектах и классах

#class #sorting #random #numbers

#класс #сортировка #Случайный #числа

Вопрос:

Я создаю два класса, называемые секундомером и случайными числами, что я уже сделал, но мне нужно было создать тестовую программу, которая измеряла бы время выполнения сортировки 100 000 чисел с помощью сортировки по выбору. Я знаю, как создать сортировку выбора, я просто не знаю, как взять класс случайных чисел и объединить его с сортировкой выбора, я получаю сообщение об ошибке «несовместимые типы случайных чисел не могут быть преобразованы в int» Надеюсь, кто-нибудь сможет мне помочь.

Мой класс случайных чисел

 import java.util.Random;

public class randomnumbers {

Random ran1 = new Random();

private int size;

 public randomnumbers(){
       size = 100000; 
    }

public int getSize(){
    return size;
}

public void setSize(int newSize){
size = newSize;

}

public int [] createArray(int [] size){

    for (int i = 0; i < size.length; i  ){
        size[i] = ran1.nextInt();

    }
   return size;
}

public static void printArray (int [] array){

      for (int i = 0; i < array.length; i  ){

          if (i < 0){

           System.out.println(array[i]   " ");
        }
     }
   } 
}
  

Моя тестовая программа

 public static void main (String [] args){

    // Create a StopWatch object 
    StopWatch timer = new StopWatch(); 

    //create random numbers
    randomnumbers numbers = new randomnumbers();

    //Create the size of the array
    numbers.getSize();

    // Invoke the start method in StopWatch class 
    timer.start(); 

    //sort random numbers
    selectionSort();


    // Invoke the stop method in StopWatch class 
    timer.stop(); 


    // Display the execution time 
    System.out.println("The execution time for sorting 100,000 "   
    "numbers using selection sort: "   timer.getElapsedTime()   
    " milliseconds"); 



}

// selectionSort performs a selection sort on an array  
    public static void selectionSort(int[] array) { 
        for (int i = 0; i < array.length - 1; i  ) { 
        int min = array[i]; 
        int minIndex = i; 


    for (int j = i   1; j < array.length; j  ) { 
        if (array[j] < min) { 
        min = array[j]; 
        minIndex = j; 
    } 
 } 


    if (i != minIndex) { 
    array[minIndex] = array[i]; 
    array[i] = min; 
            } 
        } 
    }  
 }
  

Комментарии:

1. Пожалуйста, сделайте правильный отступ в своем коде. Это действительно имеет значение!

Ответ №1:

Где именно вы получаете ошибку «несовместимые типы случайных чисел не могут быть преобразованы в int»?

Существует множество проблем с кодом:

  1. Нетрадиционное именование
  2. size поле в randomnumbers классе используется как фактический размер массива в конструкторе, но в createArray нем оно затеняется параметром с тем же именем, но другим типом и значением.
  3. Вы не передаете никакой массив selectionSort в Main . Здесь я получаю ошибку компиляции в вашем коде.
  4. printArray имеет if (i < 0) условие, которое равно false для всех чисел ran1.nextInt(), поэтому оно ничего не будет печатать.

Подача selectionSort с numbers.createArray(new int[numbers.getSize()]) помощью компилирует и завершает сортировку массива.