Сортировка выбором от большего к меньшему не работает с++

#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! И что мы имеем:

  1. забиваем в переменную первое значение массива.
  2. сравниваем с остальным до тех пор пока не найдётся больший (через if проверяем наличие символов в массиве) и забиваем в эту переменную. если нет символов в массиве выводим значение этой переменой. иначе дальше крутим уде со второй если нашлось в массиве число больше данноготв переменной!
→ Ссылка