Мне нужно отсортировать целочисленный массив поочередно, и мне не разрешено использовать какие-либо пакеты. Я долго сижу над этим кодом, и пока он работает на бумаге, программа Test, которую использует мой университет, комментирует мой код с помощью 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 - «рабочий» массив.
Спасибо за ваше время и внимание. Извините, если это вас беспокоит. Я новичок на этом сайте, так что критиковать можно!
Привет, Т.
🤔 А знаете ли вы, что...
Java предоставляет инструменты для тестирования кода, такие как JUnit.
public class Functionality {
public static void main(String args[]) {
int[] ind = {1, 10, 2, 6, 11, 5};
int res[] = alternateSorting(ind);
for(int i=0; i< res.length; i++) {
System.out.println(res[i]);
}
}
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; 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 ;
}
}
}
Улучшите это, чтобы оно соответствовало вашим потребностям. Это выведет:
1
11
2
10
5
6