Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
#1

Сортировка с использованием рекурсии - C++

19.12.2011, 00:03. Просмотров 458. Ответов 4
Метки нет (Все метки)

Здравствуйте. Задание : Написать рекурсивную функцию сортировки массива.
Помогите пожалуйста найти алгоритмическую ошибку, так как результат работы неверный.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#pragma argsused
using namespace std;
 
void sort(int* p, int s)
{
       int max,Nmax,buf,i;
       max=p[0];
       Nmax=i;
       for (i = 0; i <s; i++) {
       if (max<=p[i]) {
       Nmax=i;
       max=p[i];
       }
       buf = p[s];
        p[s]    = p[Nmax];
        p[Nmax] = buf;
    if (s >= 2) sort(p,s-1);
   }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
int *a,n,i;
cout << "\nSize of array: ";
cin >> n;
a=new int[n];
randomize();
cout << "Array: ";
     for (i=0; i<n; i++)
     {
        a[i]=rand()%100;
        cout << a[i] << " ";
     }
cout<<endl;
sort(a,n);
cout << "\nSorted array:";
for (i = 0; i <n; i++)
cout<<a[i]<<" ";
 getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 00:03     Сортировка с использованием рекурсии
Посмотрите здесь:

С Использованием рекурсии! - C++
Привет! Есть задачка (она уже сделанная, ее у меня приняли): Во входном файле задана последовательность положительных вещественных...

Алгоритм Евклида с использованием рекурсии - C++
Моя реализация алгоритма Евклида с использованием рекурсивной функции. //Program finds greatest common divisor of two natural numbers....

Решить задачу с использованием рекурсии - C++
Функция f(n) определена для целых положительных чисел следующим образом: f(n)=1, если n=1 или f(n)=сумма f(nDIVi) по i от 2 до...

Выполнить задачу с использованием рекурсии - C++
Есть одномерный массив длиной N, заполненный числами от -10 до 10. Найти максимальную сумму, если можно брать следующий элемент, или через...

решение задач с использованием рекурсии - C++
Ув Форумчане подскажите пожалуйста либо ресурс где это можно прочитать мне нужно эту тему расписать помогите пожалуйста :)

Задание... о золотой горе с использованием рекурсии - C++
Пути в числовом треугольнике начинаются от верхнего числа. От любого числа можно перейти к одному из двух соседних чисел в следующей...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 00:09     Сортировка с использованием рекурсии #2
Цитата Сообщение от BIOSonar Посмотреть сообщение
Здравствуйте. Задание : Написать рекурсивную функцию сортировки массива.
Воспользуйтесь быстрой сортировкой (Хоар)

Добавлено через 35 секунд
http://ru.wikipedia.org/wiki/%D0%91%...B2%D0%BA%D0%B0
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
19.12.2011, 00:21  [ТС]     Сортировка с использованием рекурсии #3
Сделал. Только вот первый элемент приравнивается почему-то нулю, и последний теряется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#pragma argsused
using namespace std;
 
void qSort(int *A,int low, int high) {
            int i=low;
            int j=high;
            int x=A[(high+low)/2];
             do{
                 while(A[i]<x) ++i;
                 while(A[j]>x) --j;
                 if(i<=j){
                     int temp=A[i];
                     A[i]=A[j];
                     A[j]=temp;
                     i++; j--;
                     }
             } while(i<=j);
 
            if(low<j) qSort(A,low,j);
            if(i<high) qSort(A,i,high);
             }
 
int _tmain(int argc, _TCHAR* argv[])
{
int *a,n,i;
cout << "\nSize of array: ";
cin >> n;
a=new int[n];
randomize();
cout << "Array: ";
     for (i=0; i<n; i++)
     {
        a[i]=rand()%100;
        cout << a[i] << " ";
     }
cout<<endl;
qSort(a,0,n);
cout << "\nSorted array:";
for (i = 0; i <n; i++)
cout<<a[i]<<" ";
 getch();
}
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 00:31     Сортировка с использованием рекурсии #4
Функция верная, а вызов ее нет
C
1
qSort (a, 0, n - 1);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 00:41     Сортировка с использованием рекурсии
Еще ссылки по теме:

Вычислении функции разложением ее в ряд с использованием рекурсии - C++
Составить программу вычисления заданной математической функции путем разложения ее в ряд. Программа должна применять рекурсивную функцию...

Решение уравнения методом бисекции с использованием рекурсии - C++
Добрый день! Задачу задали в универе... Написать-то написал, сам метод халявный, но с рекурсией что-то запарился. 1....

Вычисление заданной функции разложением ее в ряд с использованием рекурсии - C++
Программа вычисляет неправильно. Видимо, я что-то упустила. Не могли бы вы мне чуть-чуть подсказать, в чем моя ошибка? ...

Сортировка слияниеим без рекурсии - C++
Нужна сортировка слиянием без использования рекурсии. Помогите ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
19.12.2011, 00:41  [ТС]     Сортировка с использованием рекурсии #5
Спасибо.
Yandex
Объявления
19.12.2011, 00:41     Сортировка с использованием рекурсии
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru