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

Ошибка в быстрой сортировке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Волновое уравнение и уравнение теплопроводности http://www.cyberforum.ru/cpp-beginners/thread863571.html
Помогите плиз наваять проги по решению этиъ двух уравнений. Горю по срокам! Сегодня последний день. Буду очень благодарен.
C++ Создать структуру, элементами которой являются фамилия автора книги и ее название Здравствуйте. Задача очень простая, но моих знаний недостаточно для решения её. Если всё таки найдётся хороший человек, то просьба сделать её так, как написал бы первокурсник ;) и пожалуйста с комментариями, если не сложно. Вот она: Написать программу, в которой необходимо создать структуру, элементами которой являются фамилия автора книги и ее название. Объявить массив данных типа структуры... http://www.cyberforum.ru/cpp-beginners/thread863570.html
C++ Преобразование (reinterpret_cast)
ifstream infile("person.dat", ios::binary); infile.read(reinterpret_cast<char*>(&pers),sizeof(pers)); pers - объект класса. Возможно глупо, но все же, интересно как в данном случае работает преобразование. Почему здесь присутствует ссылка объекта, а не сам объект?
C++ Поиск корней уравнения С++
Помогите найти ошибку. Написать и отладить программу поиска всех корней функции f(x) на от-резке . Метод нахождения корня оформить в виде отдельной функции. Найти корни методом секущих //--------------------------------------------------------------------------- #include <stdio.h> #include <math.h> #include <iostream.h> #pragma hdrstop
C++ Условный оператор http://www.cyberforum.ru/cpp-beginners/thread863552.html
Здравствуйте! Есть такой вопрос: Что выведет следующая программа? Почему она выводит именно это? Почему в языке С сделано именно так? Как можно в языке сделать иначе? Какие тут плюсы и минусы? #include <stdio.h> int main(void) { if (-1 > sizeof(int))
C++ описание кода #include<conio.h> #include<stdio.h> const n=2; int c={{4,4},{4,4}}; int sum; подробнее

Показать сообщение отдельно
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
13.05.2013, 19:45     Ошибка в быстрой сортировке
metaluga145, а если плохо,значит не сортирует

Добавлено через 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
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
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
const int n=100;
using namespace std;
 
 
void BubbleSort(int *array, int col)
{                    
        int temp=0,i,j;                              
        for (i=1;  i<col  ;  i++) // i - номер текущего шага
        {            
                for (j=0;  j<col-i;  j++)
                {     
                        if (array [j]>array [j+1])          //сравнение элементов
                        {     
                                temp=array[j];              //обмен
                                array [j]=array [j+1];    
                                array [j+1]=temp;
                        }
                }
        }
}
void SelectSort(int *arr, int col) 
{
    int tmp, j, i,pos;
    for(i = 0; i < col; ++i) // i - номер текущего шага
    { 
        pos = i; 
        tmp = arr[i];
        for(j = i + 1; j < col; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
           {
               pos = j; 
               tmp = arr[j]; 
           }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}
void QuickSort(int *arr, int col) 
{
  int i = 0, j = col;        // поставить указатели на исходные места
  int temp, p;
 
  p = arr[ col/2 ];        // центральный элемент
 
  // процедура разделения
  do 
   {
    while ( arr[i] < p ) i++;
    while ( arr[j] > p ) j--;
 
    if (i <= j) 
    {
      temp = arr[i]; 
      arr[i] = arr[j]; 
      arr[j] = temp;
      i++; j--;
    }
   } 
   while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > 0 ) QuickSort(arr, j);
  if ( col > i ) QuickSort(arr+i, col-i);
}
 
 
void main()
{ 
    int a[n],i; 
    unsigned int m;
 
    setlocale(LC_ALL, "Russian");
  //Массивы случайных чисел для сортировки:
   srand(time(NULL));
   cout<<"Массив для сортировки:"<<" ";
        cout<<endl;
   
        for (i=0;i<n;i++)
   { 
       a[i]= -100 + rand() % 301;
        cout<<a[i]<<" ";
   }
   cout<<endl;
   cout<<"Примечание: 1 - Cортировка пузырьком,\n";
    cout<<"            2 - Cортировка методом выбора,\n"; 
    cout<<"            3 - Быстрая сортировка.";
   cout<<endl;
   cout<<"Введите метод сортировки: ";
   cin >> m;
   switch(m)
   { case 1: BubbleSort(a, n); 
             cout << "Массив после сортировки <Пузырьком>: ";
              cout<<endl;
               for ( i = 0; i < n; i ++ )
               {
                cout << a[i] << " ";
                }
               cout<<endl;
               break;
     case 2: SelectSort( a, n );
           cout << "Массив после сортировки методом <Выбора>: ";
           cout<<endl;
             for ( i = 0; i < n; i ++ )
             {
                cout << a[i] << " ";
             }
             cout<<endl;
             break;
     case 3: QuickSort( a, n );
             cout << "Массив после <Быстрой сортировки>: ";
             cout<<endl;
               for ( i = 0; i < n; i ++ )
                {
                 cout << a[i] << " ";
                }
               cout<<endl;
               break;
    
   }
   system ("pause");
}
Добавлено через 54 секунды
metaluga145, объяснить вашу мысль насчёт col-1?
Она ошибочна...
 
Текущее время: 02:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru