int n = mas.length; while (!isSorted) { isSorted = true; for (int i = 0; i < n - 1; i++) { if (mas[i] > mas[i + 1]) { isSorted = false; swap(mas, i, i + 1); } } n = n - 1; } return mas; }
if (left >= right) { return; } int index = partition(array, left, right); quickSort(array, left, index - 1); quickSort(array, index + 1, right); } private static int partition(int[] array, int left, int right) { // Левый и правый индексы просмотра int i = left, j = right + 1; // Опорный элемент int v = array[left]; // Просмотр справа, просмотр слева, проверка на завершение и обмен while (true) { while (array[++i] < v) { if (i == right) { break; } } while (v < array[--j]) { if (j == left) { break; } } if (i >= j) { break; } swap(array, i, j); } swap(array, left, j); return j; } }
int cnt = 0; Arrays.sort(a); for (int i = 0; i < n; i++) { //> i для того, чтобы не считать дважды if (Arrays.binarySearch(a, -a[i]) > i) { cnt++; } } return cnt; }