так как сделать такую логикуКак проверить, если массив уже отсортирован
int[] arr = {2, 5, 3};
if (/* arr is sorted */)
....
else
...
Его плохо, что метод Array.sort недействительна
так как сделать такую логикуКак проверить, если массив уже отсортирован
int[] arr = {2, 5, 3};
if (/* arr is sorted */)
....
else
...
Его плохо, что метод Array.sort недействительна
Вам не нужно сортировать массив, чтобы проверить, если это отсортирован. Перебирайте по каждой последовательной паре элементов и проверьте, не меньше ли первого; если вы найдете пару, для которой это не так, массив не сортируется.
boolean sorted = true;
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i+1]) {
sorted = false;
break;
}
}
public static <T>
boolean isArraySorted(T[] elements, Comparator<? super T> cmp) {
int n = elements.length;
for (int i = 1; i < n; ++i) {
if (cmp.compare(elements[i-1], elements[i]) > 0) { return false; }
}
return true;
}
+1 Используйте дженерики ... Очень хорошая игрушка, но, я считаю, мне никогда не нужно спрашивать, отсортирован ли массив. –
Это здорово, вы придумали его на лету или его спрятали где-нибудь в LOL? Я надеюсь, что последнее для моего хрупкого эго, хорошая работа. +1 –
Исчерпывающая длина действительно не нужна, хотя и не интерпретируется. –
public static boolean isSorted(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
if (a[i + 1] < a[i]) {
return false;
};
}
return true;
}
должен быть длиной arr.length, не arr.length() – ajb
Ну вы можете проверить это в O (N) в худшем случае линейное время. Не отсортированный массив (при условии, что вы имеете в виду сортировку в порядке возрастания) будет иметь точку отключения. То есть в какой-то момент обр [я]> обр [я + 1]
Все, что вам нужно сделать, это
boolean is_array_sorted(int arr[]) {
for(int i=0; i < arr.len-1; i++) {
if(arr[i] > arr[i+1]) {
return false;
}
}
return true;
}
Просто измените >
к <
если ваш рода массив должен быть убывающем порядке
Сокращенный вариант:
[0,1,2,3,4].reduce((a,v) => (a!==false) && (a <= v) ? v : false, -999)
[4,3,1,2,0].reduce((a,v) => (a!==false) && (a >= v) ? v : false, +999)
Будьте осторожны:
Что вы собираетесь делать, если массив не отсортирован? – supersam654
Вы должны написать свою собственную логику. Итерации по массиву и проверка каждого элемента на следующий элемент. –
ничего, мне просто нужно как-то проверить, сортируется ли сортировка или нет – OxomHuK