Другие языки программирования и технологии

Проблема с алгоритмом быстрой сортировкой С++

Добрый день уважаемые форумчане. Прошу помощи с решением алгоритма быстрой сортировки на с++. Задание из лабораторной, в коде которого специально допушено 4 ошибки. 3 ошибки я нашел, преподаватель говорит осталаась одна, вот я уже больше двух часов разбираюсь, никак не могу понять где. Прошу помощи, очень надо разобратся. Вот код:

#include "iostream"
#include "ctime"
#include "stdlib.h"
#include <cstdlib>
#include "windows.h"

using namespace std;

void myqsort(double *massive, int left, int right);

int main()
{
SetConsoleOutputCP(1251);

// задаем количество элементов сортировки

cout << "Zadayte chislo elementov v massive N=";
int n;
cin >> n;

// выделяем память для массива заданного размера

double *mas=new double[n];
//создаем генератор случайных чисел
srand((unsigned)time(NULL));

//задаем начальные и случайные значения элементов массива
for(int i=0; i<n;>=(double)rand()/(rand()+1);
//определяем начальное время
double t1=clock();
//блок быстрой сортировки по усл неубывания
myqsort(mas,0,n-1);

//определяем конечное время

double t2=clock();
cout << "\n Vrema rascheta = " << (t2-t1)/CLOCKS_PER_SEC << endl;
cin.get();cin.get();cin.get();

return 0;
}

void myqsort(double *mas, int lb, int rb)
{
double tmp;

if((lb+1==rb)&(mas[lb]>mas[rb]))
{
tmp=mas[lb];
mas[lb]=mas[rb];
mas[rb]=tmp;
}
if(lb+1<rb)>=i_right)
{
tmp=mas[i_right];
mas[i_right]=mas[lb];
mas[lb]=tmp;
}

myqsort(mas,lb,i_right-1);
myqsort(mas, i_right+1,rb);

}
}

Очень хочется понять где туплю. Спасибо.
for(int i=0; i<n;>=(double)rand()/(rand()+1);

if((lb+1==rb)&(mas[lb]>mas[rb])) - не то, чтобы ошибка здесь. && уместнее

if(lb+1<rb)>=i_right) отсутствует описание переменной i_right, нет парной скобки

последняя } - лишняя.

Больше не искал ))
Андрей Козлов
Андрей Козлов
345
Лучший ответ
#include <iostream>
using namespace std;
#include <clocale>
#include <windows.h>
#include <ctime>

void founder(double *p, int N);
void qwickSort(double *p, int left, int right);

int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
unsigned const int size = 100;
int n;
double * p = NULL;
p = new double [size];
if (p == NULL)
{
cout << "\a Не достаточно памяти!!! ";
Sleep(2000);
exit(0);
}
founder(p, size);
qwickSort(p, 0, size - 1);

for (n = 0; n < size; n++)
printf(" %.0f ", p[n]);
delete[] p;
p = NULL;
cin.get(); cin.get();
return 0;
}
void founder(double *p, int N)
{
int n;
srand((unsigned) time(NULL));
for(n = 0; n < N; n++)
p[n] = rand();
}
void qwickSort(double *p, int left, int right)
{
int n = left, m = right;
double temp, middle = p[(left + right) / 2];
do
{
while(p[n] < middle && n < right)n++;
while(middle < p[m] && m > left)m--;
if (n <= m)
{
temp = p[n];
p[n] = p[m];
p[m] = temp;
n++;
m--;
}
}
while(n <= m);
if (left < m)qwickSort(p, left, m);
if (n < right)qwickSort(p, n, right);
}
Иван Лукевич
Иван Лукевич
77 560
в алгоритме, причем жесточайше. а еще врете как-то тупо
A.i.d.a.r Abzhanov.
A.i.d.a.r Abzhanov.
2 683