Мне нужно отсортировать чередующийся целочисленный массив, и мне не разрешено использовать какие-либо пакеты. Я долго сижу над этим кодом, и хотя он работает на бумаге, программа тестирования, которую использует мой университет, комментирует мой код с помощью StackOverflow.
Вот код, о котором идет речь. Я просто надеюсь, что какой-нибудь опытный разработчик скажет мне, что не так. Я довольно новичок в Java.
public class Functionality {
public static int[] alternateSorting(int[] a) {
int v[] = new int[a.length];
int z = a.length;
if (z == 0) {
System.out.println("Error, empty Array");
return a;
}else {
for ( int i = 0; i < a.length; i++) {
v[i] = a[i];
}
boolean swapped;
do {
swapped = false;
for (int i = 1; i < v.length; i++) {
if (v[i-1] > v[i]) {
int swap = v[i];
v[i] = v[i-1];
v[i-1] = swap;
swapped = true;
}
}
}while (swapped);
for (int f = 0; f < a.length - 1; f++) {
for (int c = f + 1; c < a.length; c++)
if (v[c] == v[f]) {
z = z - 1;
}
}
int b[] = new int[z];
int k = v[0];
int g = v[v.length - 1];
int l = v.length;
int m = 1;
for (int i = 0; i < v.length; i++) {
if ( (i*2)%4 == 0) {
if (v[i] == v[i+1]) {
b[i] = k;
k = v[i+m+1];
m--;
} else if (v[i] != v[i+1]) {
b[i] = k;
k = v[i+m];
m--;
}else{
b[i] = k;
}
}else {
if (v[l - 1] == v[l - 2]) {
b[i] = g;
g = v[l - 3];
l--;
} else if (v[l - 1] != v[l - 2]) {
b[i] = g;
g = v[l - 2];
l--;
} else {
b[i] = g;
}
}
}return b ;
}
}
Массив a должен быть отсортирован. b - массив, который возвращается, а v - «рабочий» массив.
Спасибо за ваше время и внимание. Извините, если это беспокоит вас. Я новичок в этом сайте, так что критика в порядке!
Привет, Т.