Я получаю исключение Array вне границ после выполнения этого кода: - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь выполнить пузырьковую сортировку и отсортировать массив по убыванию:

public void sortDescending(Cities arr[], int n) {
    String temp[]; //stores sorted array
    temp = new String[n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int len1 = arr[j].name.length();
            int len2 = arr[j + 1].name.length();
            if (len1 < len2) {
                temp[j] = arr[j + 1].name;
                temp[j + 1] = arr[j].name;
            }
        }
    }
}

1 Ответ

0 голосов
/ 26 сентября 2019
public void sortDescending(Cities arr[], int n){
    String temp[]; //stores sorted array
    temp = new String[n];
    for(int i=0;i<n;i++){
        for(int j=0;j<n-1;j++){//change this code as its checking array for j and j+1. so if you run you loop till n it will check array for n+1 hence array index out of bound error
        int len1 = arr[j].name.length();
        int len2 = arr[j+1].name.length();
        if(len1 < len2 ){
            temp[j] =  arr[j+1].name;
            temp[j+1] = arr[j].name;
        }
    }
 }

// для сортировки пузырьков используйте код ниже

void bubbleSort(Cities arr[], int n)
{
    //int n = arr.length;
    for (int i = 0; i < n-1; i++)
        for (int j = 0; j < n-i-1; j++)
            if (arr[j] > arr[j+1])
            {
                // swap temp and arr[i]
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
}

Если вам нужна какая-либо вещь в ответе от этой функции, просто верните массив.Вам не нужно создавать временный массив для пузырьковой сортировки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...