Вот моя домашняя работа: я хочу знать, сколько сравнений и обменов происходит в сортировке. Когда я объявил мой массив в обратном порядке или в порядке убывания следующим образом:Сортировка сортировки не отсортировалась по убыванию
int arr[] = { 5, 4, 3, 2, 1 };
& hellip; он работает нормально и счетчик сравнивает и обмен тоже, но когда я пытаюсь дать «п» и заполненный массив в обратном порядке, она заполнена он в порядке убывания, но он не работал должным образом, чтобы сортировать по убыванию, чтобы считать мои обмены, хотя он подсчитывает.
Вот код:
public class SelectionSort {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner in = new Scanner(System.in);
int compares = 0, exchanges = 0, x;
x = in.nextInt();
int[] arr = new int [x];
int n = arr.length;
int s = 0;
int min;
int temp, i, j;
System.out.print("Filling Array");
for(i = n - 1; i > 0; i--)
{
arr[i] = i;
System.out.print(" " + arr[i]);
}
System.out.println("");
for(i = 0; i < n ; i++)
{
min = i ;
for(j = i + 1; j < n; j++)
{
compares++;
if(arr[min] > arr[j])
min = j;
}
if(min != i)
{
exchanges++;
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
System.out.println("Iteration " + (++s));
for(int a = 0; a < arr.length; a++)
System.out.print(" " + arr[a]);
System.out.println("");
}
System.out.println("");
System.out.println("Compares -- >> " + compares);
System.out.println("Exchanges -->> " + exchanges);
}
}
Можете ли вы дать некоторые образцы того, что сравнивает и обмены, как ожидается, против того, что ваша программа дает для данного массива? – KevinL
Если я запустить свой код и вход 4 печатает: 'Заполнение массива 3 2 1' ' 1' Итерация '0 1 2 3' ' Итерация 2' '0 1 2 3' ' Итерация 3' '0 1 2 3' ' Iteration 4' '0 1 2 3' ' Compares - >> 6' 'Биржи - >> 0' Не уверен, что вы ожидаете от этого. – WonderWorld
Предположим, что у меня есть массив {2,1,3,4}. Теперь функции проверяют каждый элемент, если его больше, а затем затем обмениваются так, чтобы обменять ++, в этом массиве происходит только один обмен, а 6 - для поиска малых и больших –