Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрая сортировка на Си quicksort 
:(
    Опции темы
Dididid
Дата 24.5.2020, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.5.2020

Репутация: нет
Всего: нет



Здравствуйте, нужно сделать быструю сортировку положительных четных элементов массива, а отрицательные и нечетные проигнорировать 

было: 0 -3 4 2 -6
стало: 0 -3 2 4 -6 

Я написала такую программу, но она не работает, что нужно исправить?

int sort(int *B, int k) {
if (k < 2)
return k;  
int p,vv,i,j,n;
n=k/2;
if (B[n]!=0 || B[n]%2!=0)
{
while (B[n]<=0 || B[n]%2!=0)
{
n++;
}
}
p=B[n];


for (i = 0, j = k - 1; ; i++, j--) 
{

while (B[j] >= p && B[j] > 0 && B[j]%2==0) 
{
j--;
}

while (B[i] <= p && B[i]>0  && B[i]%2==0 )
{
    i++;
}
    if (i >= j) break;
    else {
    vv = B[i];
    B[i] = B[j];
    B[j] = vv;
    }
    
}
  if ( j > 0 ) sort(B, i);
  if ( k > i ) sort(B + i, k - i);

  return 1;
}

PM MAIL   Вверх
Oldshelf
Дата 25.5.2020, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 22.4.2018

Репутация: нет
Всего: 4



Код

#include <stdio.h>

int nums [5]={0, -3, 4, 2, -6};// Массив
int c=5;// Количество элементов

void srt (int ar [])
{
 int i, i2, swp;

 // Сортировка
 for (i=0; i<c-1; i++)
 {
  for (i2=i+1; i2<c; i2++)
  {
   if (ar [i]>0 && ar [i]%2==0 && ar [i2]>-1 && ar [i2]%2==0 && ar [i]>ar [i2])// Уловие
   {
    // Перестановка элементов массива
    swp=ar [i2];
    ar [i2]=ar [i];
    ar [i]=swp;
   }
  }
 }
}

int main (int argc, char *argv[])
{
 int i, i2;

 // Вывод начального массива и после сортировки функцией srt ()
 for (i2=0; i2<2; i2++)
 {
  for (i=0; i<c; i++)
  {
   printf ("%d", nums [i]);
   if (i<c-1)
    printf (", ");
  }
  if (i2==0)
  {
   printf ("\n");
   srt (nums);
  }
 }

 // Выход
 printf ("\n\nPress the Enter key to continue...");
 scanf ("%c");
}


Цитата

0, -3, 4, 2, -6
0, -3, 2, 4, -6

Press the Enter key to continue...

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.