Выбор сортировки в 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;

в противном случае вы всегда сравниваете числа с самым первым.

Замечания:

  1. Твои имена ужасны: ВТФ это рейлган? что такое луч?
  2. Методы должны начинаться с строчных букв -> Выбор должен быть выделением
  3. Отступ!

Не говори, что ты просто новичок. Это вопросы, которые все должны сначала изучить.

Попробуй это. Это просто.

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;
            }
        }
    }
}
Другие вопросы по тегам