есть проблема, которая дает мне случайное число в качестве поворота, и мне нужно отсортировать мой массив w.r.t на этом своде (ближайший на первом месте, затем самый дальний) , например.Вариант сортировки/алгоритм сортировки подсчета
array =[2,7,4,6,4,4,5,3,6,9,1,1,9] and
pivot=5
expected output: [5,4,4,6,6,3,7,2,1,1,9,9]
Это вариация подсчета сортировки, если это возможно? если не ! может ли кто-нибудь дать мне ключ к решению этой проблемы? Я встречая заграждение, думая о том, как обрабатывать счетчики и индексы массива Таким образом, до сих пор я был в состоянии сделать это
class HelloEclipse{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
int pivot=sc.nextInt();
int[] mainArray=new int[N];
int[] differenceArray=new int[N];
int[] differnceCountArray=new int[Integer.MAX_VALUE];
for(int i=0;i<N;i++){
mainArray[i]=sc.nextInt();
differenceArray[i]=pivot-mainArray[i];
if(differenceArray[i]>0){
differnceCountArray[differenceArray[i]]++;}
else{
differnceCountArray[-differenceArray[i]]++;
}
}
}
}
Любые предложения о том, как действовать будет полезно!
Почему бы не использовать Arrays.sort() для сортировки после заполнения разностного массива – brijs
Каков возможный диапазон элементов массива? Являются ли они целыми и находятся на «разумном» расстоянии от стержня? –
Проблема, с которой вы столкнулись с простым видом, заключается в том, что отрицательное * расстояние * неправильно отсортировано (в смысле проблемы). Сначала его нужно отсортировать по 'abs()', а затем по значению. Вероятно, вам нужно написать свой собственный «Компаратор». – PeterMmm