Сортировка по убыванию (методом пузырька) - C (СИ)
Формулировка задачи:
Задание: добавить сортировку слов по убыванию (по методу пузырька).
#include "stdafx.h"
#include <conio.h>
#include <iostream>
int main()
{
setlocale(0, "Russian");
char s[100];
//char ns[100] = { 0 };
int p = 0, b = 0, k = 0, g = 0, w = 0; //o = 0; z=0;
printf("Введите слова через пробел: ");
gets_s(s);
char z[42] = { 'B','b','c','C','D','d','F','f','G','g','H','h','J','j','K','k','L','l','M','m','N','n','P','p','Q','q','R','r','S','s','T','t','V','v','W','w','X','x','Y','y','Z','z' };
for (int i = 0; s[i] != 0; i++)
{
if (s[i] != ' '&&s[i] != '\t' && (s[i - 1] == ' ' || s[i - 1] == '\t' || i == 0))
{
g = 0;
w = 0;
for (p = 0; z[p] != 0; p++)
{
if (s[i] == z[p])
{
g = 1;
}
if (g == 1)
{
w = 0;
break;
}
}
if (g == 0) w = 1;
if (w == 0)
{
b = i;
while (s[i] != ' '&&s[i] != '\t'&&s[i] != 0) { i++; }
k = i;
for (i = b; i < k; i++)
{
printf("%c", s[i]);
}
printf("\n");
}
}
}
_getch();
return 0;
}Решение задачи: «Сортировка по убыванию (методом пузырька)»
textual
Листинг программы
for (int i = 0; i < n - 1; i++) // для всех элементов кроме последнего цикл
{
for (int j = (n - 1); j > i; j--) // просмотриваем элементы с конца
{
if (x[j - 1] > x[j]) // если текущий элемент меньше предыдущего
{
int temp = x[j - 1]; // меняем их местами
x[j - 1] = x[j];
x[j] = temp;
}
}
}
// массив на экран:
for (i = 0; i < n; i++)
printf("%.f ", x[i]);
printf("\n");
Объяснение кода листинга программы
int temp = x[j - 1];- в этой строке переменнойtempприсваивается значениеx[j - 1]. Это делается для того, чтобы сохранить значение элемента, который будет перемещён.x[j - 1] = x[j];- в этой строке значениеx[j]присваиваетсяx[j - 1]. Это делается для того, чтобы поменять местами элементы массива.x[j] = temp;- в этой строкеx[j]присваивается значениеtemp. Это делается для того, чтобы вернуть перемещённое значение на своё исходное место.printf(%.f, x[i]);- в этой строке выводится на экран значениеx[i]с плавающей точкой.printf(\n);- в этой строке на экран выводится символ новой строки, что позволяет перейти к следующему элементу массива при выводе.