Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос в пояснении к вопросу

Таня Логвинова Ученик (163), на голосовании 5 лет назад
Дано массив L[14] .Представить элементы так, чтобы сначала разместились элементы большие за первый элемент, потом первый элемент, а потом меньшие или равные ему элементы . Язык Си
Голосование за лучший ответ
данил тушев Гуру (3831) 5 лет назад
Тебе все расписали ранее, что не понятно? Не получается компилировать? Знаешь что это такое?
Jurijus Zaksas Искусственный Интеллект (425767) 5 лет назад
Обычная сортировка пузырем, только нада сначала запомнить первый элемент и сравнивать все время с ним.
Есть менее ресурсозатратные алгоритмы, но выигрыш в вычислениях в них приводит к проигрышу в памяти, так что сойдет и пузырь.
Dmitry Просветленный (22421) 5 лет назад
Здесь не нужна сортировка пузырьком - в этой задаче принцип, как у разбиения в быстрой сортировке. Можно за один проход переставить весь массив:

#include < stdio.h >
#include < stdlib.h >
#include < time.h >

void swap(int* a, int* b) {
const int temp = *a;
*a = *b;
*b = temp;
}

int main() {
const int size = 14;
int l[size];
srand((unsigned)time(NULL));

for (int i = 0; i < size; i++) {
l[i] = rand() % 51;
printf("%d ", l[i]);
}
printf("\n");

const int first = *l;
int j = 0;

for (int i = 1; i < size; i++)
if (l[i] > first) {
j++;
swap(l + i, l + j);
}
swap(l, l + j);

for (int i = 0; i < size; i++)
printf("%d ", l[i]);

return 0;
}
Похожие вопросы