Сортировка выбором от большего к меньшему не работает с++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
using namespace std;
int main()
{
setlocale(0, "Russian");
srand(time(0));
int const n=10;
int i;
int j;
int imin;
int p;
int a[n];
for (i=0; i<n; i++)
{
a[i]=0+rand()%30;
cout<<a[i]<<" ";
}
cout<<"\n";
for (i=0; i<n-1; i++)
{
if (a[i]>a[i+1])
{
cout<<a[i]<<" ";
}
else if (a[i]=a[i+1])
{
cout<<a[i]<<" "<<a[i+1]<<" ";
i++;
}
else
{
p=a[i+1];
j=a[i];
a[i+1]=j;
a[i]=p;
}
}
cout<<"\n";
for (i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
выдает что то по типу
26 20 16 12 18 20 0 13 11 1
26 20 16 18 18 20 13 13 11
26 20 16 18 18 20 13 13 11 1
а надо что бы высвечивало вначале рандомный массив по типу
12 40 59 3 58 6
а затем сортировало от большего к меньшему
59 58 40 12 6 3
код максимально перекорячен, до этого хоть что то норм выдавало, а я ухудшил и вообще безобразие какое то
Ответы (1 шт):
Автор решения: Strunder
→ Ссылка
начнём с того, что попробуй использовать просто рандом rand из библиотеки cstdlib! И что мы имеем:
- забиваем в переменную первое значение массива.
- сравниваем с остальным до тех пор пока не найдётся больший (через if проверяем наличие символов в массиве) и забиваем в эту переменную. если нет символов в массиве выводим значение этой переменой. иначе дальше крутим уде со второй если нашлось в массиве число больше данноготв переменной!