Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
О(m), где m — максимальное значение в массиве. Так что слово «много» не описывает.for (i = 0; i < NUM_ELEMENT; i++) {
sortArray[arrayForSort[i] + maxNum]++;
}
sortArray?Максм*2
var a = get();
var b = get();
var avg = (a + b) / 2.0;
var diff = Math.Abs(a-b);
var max = avg + dff / 2.0;
var min = avg - diff / 2.0;
int'а.import java.util.Arrays;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.IntSupplier;
public class Unconditional {
static int ifLess(long a, long b, IntSupplier trueBranch, IntSupplier falseBranch) {
int cond = (int) ((a - b) >>> 63);
return new IntSupplier[]{falseBranch, trueBranch}[cond].getAsInt();
}
static int inc(long[] array, int i, long pivot) {
return ifLess(array[i], pivot, () -> inc(array, i + 1, pivot), () -> i);
}
static int dec(long[] array, int j, long pivot) {
return ifLess(pivot, array[j], () -> dec(array, j - 1, pivot), () -> j);
}
static void swap(long[] array, int i, int j) {
long tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
static int partition(long[] array, int lo, int hi, long pivot) {
int i = inc(array, lo, pivot);
int j = dec(array, hi, pivot);
return ifLess(i, j, () -> {
swap(array, i, j);
return partition(array, i + 1, j - 1, pivot);
}, () -> j);
}
static int qsort(long[] array, int lo, int hi) {
return ifLess(lo, hi, () -> {
int p = partition(array, lo, hi, array[lo + (hi - lo) / 2]);
return qsort(array, lo, p) | qsort(array, p + 1, hi);
}, () -> 0);
}
public static void main(String[] args) {
long[] array = ThreadLocalRandom.current().longs(100, 0, 1000).toArray();
qsort(array, 0, array.length - 1);
System.out.println(Arrays.toString(array));
}
}
Сортировка массива без использования условных операторов