Упражнения на C ++: сортировка заданного массива 0, 1 и 2
C ++ Array: Упражнение 16 с решением
Напишите программу на C ++ для сортировки заданного массива 0, 1 и 2. В последнем массиве сначала поместите все 0, а затем все 1 и 2.
Пример решения:
Код C ++:
#include <bits/stdc++.h>
using namespace std;
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void sort_012_num(int nums[], int n)
{
int i = 0;
int j = n - 1;
int mid_num = 0;
while (mid_num <= j)
{
switch (nums[mid_num])
{
case 0:
swap(&nums[i++], &nums[mid_num++]);
break;
case 1:
mid_num++;
break;
case 2:
swap(&nums[mid_num], &nums[j--]);
break;
}
}
}
int main()
{
int nums[] = {0, 1, 2, 2, 1, 1, 0, 0, 1};
int n = sizeof(nums)/sizeof(nums[0]);
cout << "Original array: ";
for (int i=0; i < n; i++)
cout << nums[i] <<" ";
sort_012_num(nums, n);
printf("\nArray elements after rearranging: ");
for (int i=0; i < n; i++)
cout << nums[i] <<" ";
return 0;
}
Пример вывода:
Исходный массив: 0 1 2 2 1 1 0 0 1 Элементы массива после перестановки: 0 0 0 1 1 1 1 2 2
Блок - схема:
Редактор кода C ++:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программу на C ++ для перестановки заданного отсортированного массива натуральных чисел.
Далее: Напишите программу на C ++ для сортировки (в порядке убывания) массива различных элементов в соответствии с абсолютной разницей элементов массива и с заданным значением.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code