Эта функция принимает массив символов, представляющий гальки, а преобразует массив в символы RED, WHITE и BLUE. Также возвращается количество свопов, сделанных при перестановке. Функция возвращает 1, если вход легален и он перегруппирован успешно. Он возвращает 0, если недопустимый символ находится в входе .Худший случай Сложность этого кода в C
boolean processInput(char *pebbles, int *noOfSwaps){
int low;
int mid;
int high;
*noOfSwaps = 0;
low = 0;
while (low < strlen(pebbles) && color(*(pebbles + low)) == RED)
low++;
high = strlen(pebbles) - 1;
while (high >= 0 && color(*(pebbles + high)) == BLUE)
high--;
mid = low;
while (mid <= high){
if (color(*(pebbles + mid)) == RED){
if (mid == low){
low++;
mid++;
}
else{
swap((pebbles + mid), (pebbles + low));
(*noOfSwaps)++;
low++;
mid++;
}
}
else if (color(*(pebbles + mid)) == WHITE)
mid++;
else if (color(*(pebbles + mid)) == BLUE){
if (color(*(pebbles + high)) == BLUE)
high--;
else{
swap((pebbles + mid), (pebbles + high));
(*noOfSwaps)++;
high--;
}
}
else
return 0;
}
return 1;
}
^^^ Есть мой код выше. Только одна функция. Необходимо знать наихудшую сложность этой функции и причину. Благодаря!
Вы должны разместить здесь код переполнения стека, если вы ожидаете, что люди ответят. Просто вставьте, выберите и нажмите Ctrl + K. –
Пожалуйста, включите соответствующий текст функции здесь. Также вы должны дать некоторые из ваших собственных оценок об асимптотической сложности функции. – Guvante
Мое предсказание - O (n) –