Отсортировать последовательность по убыванию модифицированным методом простого выбора - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Расположить положительные элементы последовательности по убыванию модифицированным методом простого выбора.
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main()
{
    int a[N],i,min,j,buf;
    srand(time(0));
    printf("Ishodnii massiv:\n");
    for (i=0;i<N;i++)
    {
        printf("a[%i]=%3i\n",i,a[i]=rand()%100-50);
        }
        for (i=0;i<N-1;i++)
        {
            min=i;
            for (j=i+1;j<N;j++)
            if (a[j]>a[min]) min=j;
            buf=a[i];
            a[i]=a[min];
            a[min]=buf;
            }
            printf("\n");
            printf("Otsortirovannii massiv:\n");
            for (i=0;i<N;i++)
            {
                printf("a[%i]=%3i\n",i,a[i]);
                }
                getch();
                return 0;
                }

Как сделать так чтобы отрицательные элементы оставались на своих местах после сортировки?

Решение задачи: «Отсортировать последовательность по убыванию модифицированным методом простого выбора»

textual
Листинг программы
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main()
{
    int a[N],i,min,j,buf, y;
    srand(time(0));
    printf("Ishodnii massiv:\n");
    for (i=0;i<N;i++)
        printf("a[%i]=%3i\n",i,a[i]=rand()%100-50);
    for (i=0;i<N-1;i++)
        {
            y=i;
            while(a[y]<0 && y<N-1)
                y++;
            min=y;
            for (j=i+1;j<N;j++)
            if (a[j]>a[min] && a[j]>-1 && a[i]>-1) 
            min=j;
            if(a[i]>-1)
            {
            buf=a[i];
            a[i]=a[min];
            a[min]=buf;
            }           
         }
     printf("\n");
     printf("Otsortirovannii massiv:\n");
     for (i=0;i<N;i++)
         {
            printf("a[%i]=%3i\n",i,a[i]);
         }
     getch();
     return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется размер массива N
  3. Инициализируется генератор случайных чисел
  4. Выводится исходный массив
  5. Реализуется сортировка методом простого выбора с использованием временной переменной buf для хранения значения элемента, который нужно переместить
  6. Выводится отсортированный массив
  7. Ждется нажатие клавиши для выхода из программы
  8. Возвращается 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы