Выбор сортировки в Java
import java.awt.event.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Arrays;
public class SortPractice {
private int[] railgun = {2,7,4,2,4,7,1};
public SortPractice() {
System.out.println(Arrays.toString(railgun));
SelectionSort(railgun);
System.out.println(Arrays.toString(railgun));
}
public static void SelectionSort(int[] ray){
for(int j = 0; j < ray.length; j++){
int low = 0;
for(int i = j; i < ray.length;i++){
if(ray[i] < ray[low])
low = i;
}
System.out.println(ray[low]);
int temp = ray[low];
ray[low] = ray[j];
ray[j] = temp;
}
}
public static void main(String[] args) {
SortPractice steve = new SortPractice();
}
}
Я написал этот код на бумаге и проверял его несколько раз, но по какой-то причине он не работает. я не уверен, что пропускаю -1 или что-то и просто не заметил. Кто-нибудь, пожалуйста, посмотрите.
Я не ищу рабочий код. просто и объяснение / исправить для меня, чтобы я мог лучше понять, что я сделал не так и как исправить это самостоятельно. Спасибо:)
3 ответа
Решение
Возможно проблема здесь: int low = 0; попытаться изменить низкий = J
Я пытался, это сработало
public static void SelectionSort(int[] ray){
for(int j = 0; j < ray.length; j++){
int low = j;
for(int i = j; i < ray.length;i++){
if(ray[i] < ray[low])
low = i;
}
System.out.println(ray[low]);
int temp = ray[low];
ray[low] = ray[j];
ray[j] = temp;
}
int low = j;
в противном случае вы всегда сравниваете числа с самым первым.
Замечания:
- Твои имена ужасны: ВТФ это рейлган? что такое луч?
- Методы должны начинаться с строчных букв -> Выбор должен быть выделением
- Отступ!
Не говори, что ты просто новичок. Это вопросы, которые все должны сначала изучить.
Попробуй это. Это просто.
public static void SelectionSort(int[] numbers) {
int tempVar = 0;
for (int i = 0; i < numbers.length; i++) {
for (int j = 1; j < numbers.length - i; j++) {
if (numbers[j - 1] > numbers[j]) {
tempVar = numbers[j - 1];
numbers[j - 1] = numbers[j];
numbers[j] = tempVar;
}
}
}
}