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

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

Восстановить пароль Регистрация
 
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
19.12.2011, 00:03     Сортировка с использованием рекурсии #1
Здравствуйте. Задание : Написать рекурсивную функцию сортировки массива.
Помогите пожалуйста найти алгоритмическую ошибку, так как результат работы неверный.
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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 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++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 00:31     Сортировка с использованием рекурсии #4
Функция верная, а вызов ее нет
C
1
qSort (a, 0, n - 1);
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
19.12.2011, 00:41  [ТС]     Сортировка с использованием рекурсии #5
Спасибо.
Yandex
Объявления
19.12.2011, 00:41     Сортировка с использованием рекурсии
Ответ Создать тему
Опции темы

Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru