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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ где скачать книгу "Язык программирования C. Лекции и упражнения Стивен Прата" http://www.cyberforum.ru/cpp-beginners/thread383150.html
Подскажите у кого есть в електронном формате эта книга ? вот ссылка http://www.yakaboo.ua/ru/catalog/all/c-primer-plus-89173
C++ Задачи на двумерный массив По результатам метеорологических наблюдений за 10 последних лет известно количество солнечных дней в году для пяти морских курортов. Кроме этого известны расстояния до них. Оп-ределить курорт с наиболее благоприятным климатом (с максимальным суммарным количеством солнечных дней за время наблюдений). Если таких несколько, то вывести ближайший из них. http://www.cyberforum.ru/cpp-beginners/thread383145.html
C++ Массивы
помогите я написал код а дальше че то уже в голову не лезит как до конца доделать вот задание В одномерном массиве {3.24, -7.16, 2.18, -0.16, -3.22, 7.14, 2.88, -3.20, -0.99, -4.15} вычислить: сжать массив, удалив из него все элементы, модуль которых находится в интервале . Освободившиеся в конце массива элементы заполнить нулями. вот код #include <iostream> #include <math.h>...
Найти значение косинуса по формуле тейлора C++
с точностью eps #include <iostream> #include <math.h> using namespace std; double vozv_v_n_step(double x, int n) { double k=1; for(int i=1;i<=n;i++) {
C++ Помогите решить . http://www.cyberforum.ru/cpp-beginners/thread383133.html
C++ Вести три действительных числа от -10 до 10. Возвести в квадрат те из них, значения которых неотрицательны, и в третью степень отрицательные . Вывести полученные значения.
C++ простейший калькулятор include <iostream> using namespace std; void main() { float x, y, z; char* 'r'; cout<<"BBEDUTE 4UCJ|O"<<endl; cin>> x >>endl; cout<<"BBEDUTE deistvie(+,-,*,/)"<<endl; cin>>'r'; подробнее

Показать сообщение отдельно
Дед Мороз
0 / 0 / 0
Регистрация: 26.12.2010
Сообщений: 4
13.11.2011, 19:28     Быстрая сортировка
Есть три файла:
Функция:
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
#ifndef QUICK
#define QUICK
#include <vector>
 
using namespace std;
 
template<class T> 
void qs(vector<T> &vect, int L, int R) // функция сортировки
{
   L=0;
   R=vect.size();
   int i = L;
   int j = R;       // поставить указатели на исходные места 
   T temp_QuickS;
   int central;
   central = vect.at( vect.size() - 1 );        // центральный элемент
                          // процедура разделениz
      do {
         while ( vect.at(i) < central ) i++;
         while ( vect.at(j) > central ) j--;
            if (i <= j) {
               temp_QuickS = vect.at(i);
               vect.at(i) = vect.at(j); 
               vect.at(j) = temp_QuickS;
               i++; j--;
            }
       } 
       while ( i<=j );
       
      /*  temp_QuickS = vect.at(i); 
    vect.at(i) = vect.at(R); 
    vect.at(R) =  temp_QuickS;*/
  
                  // рекурсивные вызовы, если есть, что сортировать 
      if ( j > L )   qs(vect, L, i-1);
      if ( R > i )   qs(vect, i+1, R );
}
#endif
Структура:
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
#ifndef QUICKSORT
#define QUICKSORT
 
template<class T, class T1> // Структура элемента
struct QuickSort
{
  T x; // Ключ
  T1 y; // Данные
  bool operator<(QuickSort<T, T1>); // Функция сравнения
  bool operator>(QuickSort<T, T1>); // Функция сравнения
};
 
 template<class T, class T1>
bool QuickSort<T, T1>::operator<(QuickSort<T, T1> QuickS) // Функция сравнения
  {
     if(x==QuickS.x)
      if(y<QuickS.y)
        return true;
      else
        return false;
    if(x<QuickS.x)
      return true;
    else
      return false;
  }
template<class T, class T1>
bool QuickSort<T, T1>::operator>(QuickSort<T, T1> QuickS) // Функция сравнения
  {
     if(x==QuickS.x)
      if(y>QuickS.y)
        return true;
      else
        return false;
    if(x>QuickS.x)
      return true;
    else
   
     return false;
     } 
 
#endif
И собственно файл в котором происходит все действие:
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
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
#include "QuickSort.h"
#include "quick.cpp"
 
using std::cout;
using std::ifstream;
using std::setw;
using std::endl;
 
void Input(vector<QuickSort<int, int> > *vect) // Функция ввода
{
  ifstream input_file("file2.txt"); // Файл с данными
  QuickSort<int, int> QuickS; // Вспомогательная структура
  while(!input_file.eof()) // Перемещаем элементы из файла в вектор
  {
    input_file>>QuickS.x;
    input_file>>QuickS.y;
    vect->push_back(QuickS);
  }
  input_file.close();
}
 
void Output(vector<QuickSort<int, int> > &vect) // Функция вывода
{
  cout<<"Key"<<setw(8)<<"Data"<<endl;
  for(int i=0; i<vect.size(); i++) // Выводим результат на экран
    cout<<setw(3)<<vect.at(i).x<<setw(6)<<vect.at(i).y<<endl;
}
 
int main(int argc, char *argv[])
{
 
    vector<QuickSort<int, int> > vect ; // Вектор заданных элементов
    Input(&vect); // Считываем данные
    qs(vect, 0, vect.size()); // Сортируем
    Output(vect); // Вывод на экран
    system("PAUSE");
    return EXIT_SUCCESS;
}
Не могу понять в чем ошибка. нужно чтобы сортировал. Подозреваю что со входом данных при рекурсии.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru