Позвольте мне подчеркнуть тот факт, что я очень начинающий, факт, который, я уверен, очевиден в моем коде.
Мне нужно определить функцию, которая идентифицирует НИЗКОЕ УНИКАЛЬНОЕ (встречается только один раз) значение входного массива, однако мой нынешний подход имеет недостатки.
Я думаю, что изо всех сил пытаюсь интегрировать каждый аспект проблемы.
Я начинаю с сортировки значений входного массива от высшего к низшему через реализацию вложенного цикла. Затем я перехожу к установке всех значений, которые появляются более одного раза, в ноль. Наконец, я идентифицирую минимальное уникальное значение измененного массива и возвращаю его. Если в массиве нет уникального значения, я возвращаю -1.
Мне разрешили предположить, что каждый элемент входного массива будет как положительным, так и большим, чем ноль, а его длина будет не менее 1.
int minUnique(int *values, int length)
{
int i, j, temp, min = values[0];
for (i = 0; i < length; i++) { /* sorting */
for (j = 0; j < length - 1; j++) {
if (values[j] < values[j +1]) {
temp = values[j + 1];
values[j + 1] = values[j];
values[j] = temp;
}
}
}
for (i = 0; i < length; i++) {
printf(" %d", values[i]);
}
for (i = 0; i < length; i++) { /* setting 0 */
if (values[i] == values[i + 1]) {
values[i] = 0;
values[i + 1] = 0;
}
}
for (i = 0; i < length; i++) {
printf(" %d", values[i]);
}
for (i = 1; i < length - 1; i++) { /* identifying min */
if ((values[i] < min) && (values[i] != 0)) {
min = values[i];
} else {
count++;
}
} if (count == length) {
return -1;
} else {
return min;
}
}
Если бы я был введенмассив, такой как значения [12] = {3, 7, 5, 6, 3, 4, 8, 4, 5, 8, 12, 11}, я ожидаю, что он будет реорганизован как значения [12] = {12, 11, 8, 8, 7, 6, 5, 5, 4, 4, 3, 3} и 6 подлежат возврату.
Мой код в настоящее время возвращает 3.
Код не генерирует никаких сообщений об ошибках.
примечание: вы можете игнорировать строки printf - они просто там, чтобы помочь мнепонять, что происходит