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

Быстрая сортировка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Приведение типов http://www.cyberforum.ru/cpp-beginners/thread658173.html
Есть ли какая-нибудь разница в следующих выражениях: float a = 123.4f и float a = (float)123.4
C++ AVL - дерево, ошибка линковки <LNK2001> Здравствуйте форумчане! У меня возникли некоторые трудности с линковщиком, помогите разобраться с ним, если не сложно:wall: Пытаюсь реализовать AVL - дерево Есть структура struct Tree { public: http://www.cyberforum.ru/cpp-beginners/thread658170.html
C++ Зеркальное отображение вводимого числа
Сам новичок в С++, только начал в инсте проходить. Дали задание, а я не могу понять, как его решить. Препод сказал через циклы какие-то, делением- сам ничего не понял, группа тоже, такие пироги. Помогите, объясните пожалуйста, буду очень благодарен http://cs304806.userapi.com/v304806292/3bf6/anXu_INtXXE.jpg
string в hex C++
Здравствуйте, подскажите как string в hex перегнать ?
C++ Указатели на объект http://www.cyberforum.ru/cpp-beginners/thread658149.html
Господа код компилируется и запускается , но после запуска выскакивает окно - прекращена работа программы , почему ? Что я делаю не так и как с этим бороться ? #include <cstdlib> #include <iostream> using namespace std; class My{ public: int a; }*ukaz;
C++ Ханнойские Башни Доброго вечера суток: есть работающий код Ханойских Башнь, вот только все через стринг, как можно переделать через int и чтобы все было красивей в плане визуализации,ато явно что то не то выходит. #include <iostream> #include <string> #include <conio.h> using namespace std; void Hanoi (int n, string startpeg, string middlepeg, string endpeg) { setlocale(LC_CTYPE,"Russian"); if (n==1) подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.09.2012, 00:39  [ТС]     Быстрая сортировка
Переделал код с указателями.
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//Быстрая сортировка
#include <iostream>
using std::cout;
using std::endl;
 
//int quicksort(int array[], int nachZnachIndex, int conechZnachIndex);
int quicksort(int[],int,int);
int *partition(int*,int*);//вызывается quicksort 
//функция выполняет разбиение массива
 
int main()
{
    int const n=10;
    int array[n]={37,2,6,4,89,8,10,12,68,45};
//  int array[n]={8, 2 ,6, 4, 10, 12, 37, 89, 68, 45 };
    int *pArray;
    pArray=array;
//  int nachZnachIndex=0;
//  int conechZnachIndex=9;
//  cout <<"pArray= "<<pArray<<endl<<"array= "<<array<<endl;
    
//  cout <<"*(pArray+1)= "<<*pArray<<endl<<"array[1]= "<<array[0]<<endl;
    
//  cout <<endl<<"***********"<<endl<<*partition(pArray,(pArray+9))<<endl<<"************"<<endl;
    quicksort(pArray,0,9);
//cout <<endl<<endl<<*(pArray+9-3)<<endl<<endl;
    for(int i=0;i<10;i++)
        cout <<array[i]<<" ";
    cout <<endl;     
    return 0;   
};                                                               
                            
int quicksort(int pArray[],int nachZnachIndex, int conechZnachIndex)//сортирует одномерный целочисленный массив
{                 
    int* pNachZnachIndex;
    int* pConechZnachIndex;
    int* index;
    int nachZnachIndex_R;
    int conechZnachIndex_L;
    int adrIndex;
    pNachZnachIndex=pArray+nachZnachIndex;
    pConechZnachIndex=pArray+conechZnachIndex;
//  cout <<endl<<*pNachZnachIndex<<"  "<<*pConechZnachIndex<<endl;
 
    index=partition(pNachZnachIndex,pConechZnachIndex);
    cout <<endl<<"***"<<endl<<"*index= "<<*index<<endl<<"***"<<endl;
    //cout <<*pArray<<endl;
    for(int i=nachZnachIndex;i<=conechZnachIndex;i++)
    {
        if(pArray+i==index)
            adrIndex=i;
    }
    cout <<"adrIndex= "<<adrIndex<<endl;
    cout <<endl<<"pArray[adrIndex]= "<<pArray[adrIndex]<<endl;
    //условие
    nachZnachIndex_R=adrIndex+1;
    conechZnachIndex_L=adrIndex-1;
    cout <<endl<<"nachZnachIndex_R= "<<nachZnachIndex_R<<endl
    <<"nachZnachIndex_L= "<<conechZnachIndex_L<<endl;
    if(nachZnachIndex-conechZnachIndex_L<0)
        quicksort(pArray,nachZnachIndex,conechZnachIndex_L);
    if(nachZnachIndex_R-conechZnachIndex<0)
        quicksort(pArray,nachZnachIndex_R,conechZnachIndex);
    
/*  int *index;        
    int *index1;              
    index1=index=partition(nachZnachIndex,conechZnachIndex);//vozvrachaet adres delitel9 masiva
cout <<" *conechZnachIndex= "<<*conechZnachIndex<<" *index= "<<*index<<endl;
    
                  
    if(nachZnachIndex!=index-1&&nachZnachIndex!=index)
        return quicksort(nachZnachIndex,index-1);
 
cout <<" *conechZnachIndex= "<<*conechZnachIndex<<" *index= "<<*index<<" *index1= "<<*index1<<endl; 
    if(conechZnachIndex!=index+1&&conechZnachIndex!=index)
        return quicksort(index+1,conechZnachIndex);
    */
 
}
 
 
int *partition(int *nach, int *conec)//выполняет разбиение массива (скорее всего на 2массива) и возвращает индек массива где установлен элемент
{
    cout <<"*nach= "<<*nach<<"  *conec= "<<*conec<<endl;
    int k=1;
    while(k!=3)
    { 
        for(;(k==1);conec--)
        { 
            if(*nach>*conec)
            {
                int b=*nach;
                *nach=*conec;
                *conec=b;
                k=2; 
                break;
            }    
            else if(nach==conec)
            {
            //  cout <<"1Элемент на своем месте"<<endl;
                k=3;   
            //  cout <<endl<<"kk= "<<kk<<endl;
                //return kk;
                return nach;
                break;
            }
        }
        cout <<"*conec= "<<*conec<<"  *nach= "<<*nach<<endl;
        for(;(k==2);nach++)    
        {
            if(*nach>*conec)
            {            
                int b=*nach;
                *nach=*conec;
                *conec=b;
                k=1;
                break;
            }
            else if(nach==conec)
            {
            //  cout <<"2Элемент на своем месте"<<endl;
                k=3;  
                //return kk2;
                return nach;
                break;
            }
        }
        //k=3;
           
    }       
}
С указателями вроде более менее разобрался
 
Текущее время: 21:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru