Таким образом, целью этого кода является создание очереди приоритетов с использованием сортированного массива.Общий объект, получающий нулевое значение, а не двойное значение
В настоящее время у меня есть объект C, который возвращает null, когда я не считаю, что это должно быть.
Соответствующий код:
int n = 5;
PQ<Double> pq1 = new PQasSortedArray<Double>(n);
double[] arr1 = new double[n];
for(int i = 0; i < n; i++){
Random num = new Random(); //Assigning random double values to the array
arr1[i] = num.nextDouble();
}
for (int i=0; i < arr1.length; i++){
pq1.insert(arr1[i]);
}
for (int i=arr1.length-1; i >=0 ; i--){
arr1[i] = pq1.deleteMin();
}
В моем классе PQasSortedArray У меня есть следующий код: соответствующий
public class PQasSortedArray<C extends Comparable<? super C>> implements PQ<C> {
private C[] arr;
private int currentSize;
public PQasSortedArray(int size) {
arr = (C[]) new Comparable[size];
currentSize = 0;
}
public void insert(C data){
arr[currentSize++] = data;
}
public C min(){
C tmp = arr[0]; // <-- This gives tmp a value of null, which is not what I want
for(int i = 1; i < currentSize; i++) { // <-- This is skipped entirely as tmp is null
if(tmp.compareTo(arr[i]) > 0) {
tmp = arr[i];
}
}
return tmp;
}
public C deleteMin(){ // <-- This also doesn't work as intended
C tmp = arr[0];
arr[0] = arr[currentSize-1];
arr[currentSize-1] = null;
currentSize--;
return tmp;
}
Так что я вообще довольно уверен, как идти об этом. Я не привык использовать дженерики, поэтому я мог бы пропустить что-то совершенно очевидное.
public interface PQ<C extends Comparable<? super C>> {
public boolean isFull();
public boolean isEmpty();
public void insert(C data);
public C min();
public C deleteMin();
}
Код указан в первом блоке является то, что я использую в качестве теста. Учитывая 5 двойных значений, результат равен 5 двойным значениям, а их индексы изменяются на -1, поэтому 0 становится последним из массива, а 1 становится 0 и т. Д. Предполагается удалить минимальное значение массива и вернуть массив размер n-1, где исходный массив равен n. Я выяснил, что часть того, что я хотел сделать, - это упорядочить массив от наименьшего числа в методе вставки, но я все еще смущен, почему tmp становится нулевым. – Nyxre
«Это пропущено полностью, поскольку tmp равно null» в этой строке нет ничего, что пропустило бы, если tmp был пустым. Если currentSize был равен нулю, то ... – weston
Пожалуйста, разместите свой интерфейс PQ. – ceklock