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

Метод быстрой сортировки: нужно исправить! - C++

Восстановить пароль Регистрация
 
Alex_Faru
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 11
25.12.2011, 17:04     Метод быстрой сортировки: нужно исправить! #1
Помогите исправить ошибку. Само задание описано в комментах в программе, но написанная мной функция неверно отсортировывает массив D. Это срочно. Решение мне нужно сегодня. Очень прошу, помогите.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "stdafx.h"
#include "conio.h"
#include "time.h"
 
 
 
//Вариант 21.
// Ввести массивы А В и С. В массив D записать элементы А В С, которые встречаются во всех трёх массивах. 
//Отсортировать элементы A B C D по возрастанию с помощью быстрой сортировки.
 
 
//--------------------объявление функции-------------------------
void qs(int* m,int first, int last);
//---------------------------------------------------------------
 
int _tmain(int argc, _TCHAR* argv[])
{   
////////////////
    int A[10];//
    int B[10];//-----> инициализация массивов (одномерные, в каждом 10 элементов).
    int C[10];//
    int D[10];//
////////////////
 
//-----------------------ЗАПОЛНЕНИЕ МАССИВОВ-------------------//
//==============================================================
    for (int i=0; i<10; i++) 
    {                        
        A[i]= i+1;           
        B[i]= 10-i;          
        C[i]=(i+1)*2;        
    }
 
//-------------СОРТИРОВКА МАССИВОВ А, В, С, D-----------------//
//==============================================================
    qs(A, 0, 9);
    qs(B, 0, 9);
    qs(C, 0, 9);
//----------------------ЗАПОЛНЕНИЕ МАССИВА D-------------------//
//==============================================================
for (int b=0; b<10; b++)
    D[b]=0;
    for (int j=0; j<10; j++)
    {
        for (int k=0; k<10; k++)
        {
            for (int m=0; m<10; m++)
            {
                if ( C[m]==B[k] && B[k]==A[j])
                {
                    D[j]=C[m];
                }
    
            }
        }
    }
//---------------------СОРТИРОВКА МАССИВА D--------------------//
//==============================================================
    qs(D, 0, 9);
//-------------------ВЫВОД МАССИВОВ А, В, С--------------------//
//==============================================================
printf ("Massive A:\n");
for (int a=0; a<10; a++)
        printf ("%d\n", A[a]);
printf ("Massive B:\n");
for (int b=0; b<10; b++)
        printf ("%d\n", B[b]);
printf ("Massive C:\n");
for (int c=0; c<10; c++)
        printf ("%d\n", C[c]);
//----------------------ВЫВОД МАССИВА D-----------------------//
//==============================================================
printf ("Massive D:\n");
 
for (int n=0; n<10; n++)
    {
        printf ("%d", D[n]);
        printf ("\n");
    }
//==============================================================
    _getch();
    return 0;
}
 
void qs(int* m,int first, int last)
{
 int i = first; 
 int j = last; 
 int p=m[(first + last)/2];
 int tmp;
 do {
 while (m[i] <= p) ++i;
 while (m[j] >= p) --j;
 
 if(i <= j) 
 {
    if(i<=j)
    {
        tmp=m[i];
        m[i]=m[j];
        m[j]=tmp;
        i++; j--;
    }
 }
    } while(i<=j);
      if(last<=j) qs(m,last,j);
      if(i<=first) qs(m,i,first);
 }
Добавлено через 1 час 22 минуты
Видимо я поспешил в создании сообщения: код написан на C++ для консольного приложения. Ещё раз прощу - помогите! Очень нужно!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 17:04     Метод быстрой сортировки: нужно исправить!
Посмотрите здесь:

C++ Поиск самой быстрой сортировки
C++ Тонкости быстрой сортировки
C++ Алгорим быстрой сортировки
Комбинированный метод быстрой сортировки с методом «пузырька» C++
C++ шаблонные функции(нужно сделать метод сортировки)
визуализатор быстрой сортировки С++ C++
прогресс выполнения быстрой сортировки C++
Алгоритм быстрой сортировки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
25.12.2011, 22:59     Метод быстрой сортировки: нужно исправить! #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void qs(int* m,int first, int last)
{
    int i = first; 
    int j = last; 
    int p=m[(first + last)/2];
    int tmp;
    do {
        while (m[i] < p) ++i;
        while (m[j] > p) --j;
 
        if(i <= j) 
        {
            tmp=m[i];
            m[i]=m[j];
            m[j]=tmp;
            i++; j--;
        }
    } while(i<=j);
    if(j > 0) 
        qs(m,0,j);
    if(last > i) 
        qs(m,i,last);
}
Alex_Faru
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 11
26.12.2011, 00:30  [ТС]     Метод быстрой сортировки: нужно исправить! #3
Огромное спасибо!
Yandex
Объявления
26.12.2011, 00:30     Метод быстрой сортировки: нужно исправить!
Ответ Создать тему
Опции темы

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