Двухсторонняя сортировка выбором - нужен пример - C (СИ)

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

Помогите написать или найти код этой сортировки( она улучшает обычную сортировку выбором. кроме максимального элемента в неотсортированном подмассиве также находит и минимальный. Максимум при этом перемещать в конец подмассива, а минимум — в начало.

Код к задаче: «Двухсторонняя сортировка выбором - нужен пример - C (СИ)»

textual
#include <stdio.h>
#define n 10
 
void swap(int *a,int *b)
{
    int tmp;
    if(*a==*b)   //отказываемся от замены одинаковых
        return;
    tmp=*a;
    *a=*b;
    *b=tmp;
    printf("%d <-> %d\n",*a,*b);
}
 
main()
{
  int mas[n]={9,5,1,3,6,7,4,8,2,0};
  int max,min,max_index,min_index,i,j,k;
 
  k=n-1;
  for(i=0;i<=k;i++)
  {
      max=min=mas[i];
      max_index=min_index=i;
        for(j=i+1;j<=k;j++)
        {
            if(mas[j]>max)
            {
                max=mas[j];
                max_index=j;
            }
            if(mas[j]<min)
            {
                min=mas[j];
                min_index=j;
            }
        }
    if(max_index==i&&min_index!=k)   //куча if-ов для обработки пограничных значений
    {
        swap(&mas[k],&mas[max_index]);
        swap(&mas[i],&mas[min_index]);
    }
    if(min_index==k&&max_index!=i)
    {
        swap(&mas[i],&mas[min_index]);
        swap(&mas[k],&mas[max_index]);
    }
    if(min_index==k&&max_index==i)
        swap(&mas[k],&mas[i]);
    if(min_index!=k&&max_index!=i)
     {
        swap(&mas[k],&mas[max_index]);
        swap(&mas[i],&mas[min_index]);
     }
    k--; //сокращаем границу цикла
 
  }
for(i=0;i<n;i++)
{
    printf("%d ",mas[i]);
}
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

10   голосов, оценка 4.400 из 5


СДЕЛАЙТЕ РЕПОСТ