Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 19:04   #1
LustHunter
Новичок
Джуниор
 
Регистрация: 07.10.2011
Сообщений: 2
По умолчанию Быстрая сортировка(сортировка хаора) с++

Здравствуйте. Учусь с++. Попытался написать прогу по этому заданию: Напишите функцию, которая сортирует массив с использованием рекурсии.
Но не работает, ошибку найти не могу, подскажите в чем проблема?
Код:
#include "stdafx.h"
#include <iostream> 
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <stdio.h>
using namespace std;

void sortHoor(int A[], int L,int R) 
{
int i=L, j=R; 
//printf("L=%d & \n R=%d", L,R);
int x=A[(L+R)/2]; 
//printf("x=%d\n", x);
while( i<=j )
  {
	while (A[i]<x)
	i++;
	while (A[j]>x)
	j--;
	if (i<=j)
	 {
		int t = A[i];
		A[i] = A[j];
		A[j] = t;
		i++;
		j--; 
	 } 
  }
if(L<j)
sortHoor(A, L, j);
if(i<R)
sortHoor(A, i, R); 
} 


int vvod(int *A, int n)
{
	int v=0;
	printf("kak budet zadavatsa massiv: 1)random, 2)sam zadam \t");
	scanf("%d", &v);
	if (v==1)
	{
		for (int i=0;i<n;i++)
			A[i]=rand()%21-10;
	}
	if (v==2)
	{
		for (int i=0;i<n;i++)
			scanf("%d", &A[i]);
	}
	if(v!=1 && v!=2)
		printf("error");
	return 0;
}

int main()
{
	int n=0, L=0, R=0;
	printf ("vvedite razmer massiva: n\t");
	scanf ("%d", &n);
	int* A=(int* )malloc(n* sizeof(int ));
	vvod (A,n);
	for (int i=0;i<n;i++)
	{
		printf("%d\t", A[i]);
	}
	L=A[0];
	R=A[n-1];
	sortHoor (A,L,R);
	for (int i=0;i<n;i++)
		printf("%d\t", A[i]);
	system("pause");
	return 0;
}

Последний раз редактировалось LustHunter; 07.10.2011 в 19:13.
LustHunter вне форума Ответить с цитированием
Старый 07.10.2011, 19:21   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Каким методом сортировать? А то что то не очень понятно. А вообще у каждой рекурсивной функции должно быть терминирующее условие которое собственно останавливает рекурсию. В вашей функции этого не видно.
Есть реализация рекурсивной сортировки методом половинного деления.
Однако на языке C#, но там достаточно хорошо все документировано. Думаю что перевести на С++ не составит особой сложности.
Если конечно вам подойдет этот метод
attachment.rar
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 07.10.2011 в 19:28.
WorldMaster вне форума Ответить с цитированием
Старый 07.10.2011, 19:27   #3
LustHunter
Новичок
Джуниор
 
Регистрация: 07.10.2011
Сообщений: 2
По умолчанию

Цитата:
реализация рекурсивной сортировки методом половинного деления.
именно этот метод, только я не уверен что разберусь в С#, но попробовать можно
LustHunter вне форума Ответить с цитированием
Старый 07.10.2011, 19:37   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от LustHunter Посмотреть сообщение
именно этот метод, только я не уверен что разберусь в С#, но попробовать можно
Вы посмотрите там несложно. Если что пишите в аську.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка Danko Помощь студентам 1 20.04.2011 21:22
Быстрая сортировка Neitrosha Помощь студентам 0 07.12.2010 19:40
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
быстрая сортировка ГРИГОРИЙ-кореш Помощь студентам 1 16.04.2009 18:13