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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите плз найти ошибку в сортировке!!!!! не понимаю ,в чем ошибка 
V
    Опции темы
Jater
Дата 2.11.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код
int partition (int * m, int a, int b) 
    {
      int i = a,tmp;
      for (int j = a; j <= b; j++)    // просматриваем с a по b
       {
         if (m[j] <= m[b])            // если элемент m[j] не превосходит m[b],
          {
            tmp=m[i];
            m[i]=m[j];
            m[j]=tmp; 
                                        // меняем местами m[j] и m[a], m[a+1], m[a+2] и так далее...
                                      // то есть переносим элементы меньшие m[b] в начало,
                                      // а затем и сам m[b] «сверху»
            i++;                      // таким образом последний обмен: m[b] и m[i], после чего i++
          }
       }
      return i-1;                     // в индексе i хранится <новая позиция элемента m[b]> + 1
    }
 
   int quicksort (int * m, int a, int b) // a - начало подмножества, b - конец
    {                                        // для первого вызова: a = 0, b = <элементов в массиве> - 1
     if (a >= b)
         return 0;
     int c = partition (m, a, b);
     quicksort (m, a, c-1);
     quicksort (m, c+1, b);
     return 0;
    }
Код
#include <math.h>
#include<iostream>
#include<time.h>
using namespace std;
int main()
{    int const nmax=100;
    int A[nmax],n,s;
    srand(time(0));
    cout<<"n: ";
    cin>>n;
    for (int i=0; i<n; i++)
    {  
        A[i]=rand()%100;                        // Заполнение массивов
    }
    for (int i=0; i<n; i++)
        cout<<A[i]<<" ";
    cout<<endl;
    s=quicksort(A,0,n);
    cout<<s;
    system("pause");
    return 0;
}
помогите вывести на экран отсортированный массив!!!!!

M
bsa
Пользуйся кнопкой "Код"

Модератор: Название темы должно отражать ее суть!

Это сообщение отредактировал(а) bsa - 6.11.2008, 00:36
PM MAIL   Вверх
IKM2007
Дата 2.11.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


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

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



Jater, пользуйся кнопкой КОД.
Зачем в quicksort return-ы? Она должна быть рекурсивная, а у тебя выполняется всегда один раз. Должно быть так.
Код

void quicksort (int * m, int a, int b) // a - начало подмножества, b - конец
    {                                        // для первого вызова: a = 0, b = <элементов в массиве> - 1
     if (a < b)
     {
     int c = partition (m, a, b);
     quicksort (m, a, c-1);
     quicksort (m, c+1, b);
     }
    }


Вместо
Код

s=quicksort(A,0,n);
    cout<<s;

напиши
Код

quicksort(A,0,n-1);
   for (int i=0; i<n; i++)
        cout<<A[i]<<" ";


ты вызываешь quicksort для n, а надо n-1, так как индекс последнего элемента массива n-1.

И ещe лучше вместо
Код

 int A[nmax],n,s;
    srand(time(0));

написать
Код

int A[nmax],n;
    srand((unsigned int)time(NULL));



--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Jater
Дата 2.11.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



УРА!!!! работает!)) smile 

PM MAIL   Вверх
J0ker
Дата 2.11.2008, 19:28 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



абалдеть
значит как написать квиксорт - понимаем, а как организовать вывод - НЕ понимаем
свежо предание  smile 


--------------------
user posted image
PM MAIL   Вверх
bsa
Дата 6.11.2008, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
Переименовал тему
Jater, если вопрос исчерпан, помечай тему решенной


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

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

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

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

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


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

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


 




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


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

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