мне нужно разобраться в следующем array-Java: Как отдать приоритет категории, если цена такая же?
“Blouse” “W” 21 17.95
“Blouse” “C” 35 17.95
“Shirt” “M” 13 21.95
“Pants” “W” 22 67.95
“Pants” “M” 22 62.95
“Pants” “C” 26 21.95
“Coat” “C” 20 21.95
“Coat” “M” 10 62.95
“Blouse” “W” 21 17.95
“Blouse” “C” 35 17.95
“Shirt” “M” 13 21.95
“Pants” “W” 22 67.95
“Pants” “M” 22 62.95
“Pants” “C” 26 21.95
“Coat” “C” 20 21.95
“Coat” “M” 10 62.95
Если цены такие же, мне нужно отдавать приоритет С перед W и W, прежде чем М. Мне нужно использовать выбор сортировки для этой программы, и это следующий образом-
public static void selectionSort (Comparable[] list, int n)
{
int min;
Comparable temp;
for (int i = 0; i< n - 1;i++)
{
min = i;
for(int scan = i + 1; scan < n; scan++)
{
if (list[i].compareTo(list[scan]) < 0)
min = scan;
}
temp = list[min];
list[min] = list[i];
list[i] = temp;
}
У меня возникают проблемы, когда цены равны, мой метод CompareTo выглядит следующим образом. Я имею в виду использование дозорных значений, чтобы уделить приоритетное внимание этим категориям, но как бы я это сделал? Кроме того, что должен делать алгоритм сортировки, имея все эти контрольные значения для разных категорий при просмотре всего массива. Как он должен выбрать подходящий (C до W, w перед M) объект для обмена?
public int compareTo(Object obj)
{
int result;
double objPrice = ((Item)obj).getPrice();
char objCategory = ((Item)obj).getCategory().charAt(1);
if (objPrice == price)
// {
// if(objCategory.charAt(1) == 'M')
// return result = 0;
// else
// return result = 1;
// }
switch (objCategory)
{
case 'C':
return -1;
}
else
return result = (int)(objPrice - price);
}
Вы можете выполнить два прогона сортировки, которые сортируются по цене, а вторая проверяет группы с равными значениями и повторно сортирует эти группы по категориям. –