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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2010, 22:52   #1
discorsa
Новичок
Джуниор
 
Регистрация: 11.10.2010
Сообщений: 1
По умолчанию Из пузырька в квиксорт. с++

Задание - алфавитная сортировка строки ( с Class String). Ну, сделала через пузырёк, но execution time же - убийственен. Надо переделать в квиксорт, но что-то сооовсем не соображу как. Ниже имеющийся рабочий код, пузырьком. Помогите, пожалуйста, с void sort ().
/единственный мой класс программирования (кроме ассемблера%) ), а я застряла.

Цитата:
using namespace std;

void sort ( String *a, int n )
{
int changed;
String temp;
do {
changed = 0;
for ( int i = 0; i < n - 1; i++ ) {
if ( a[i+1] < a[i] ) {
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
changed = 1;
}
}
} while ( changed );
}

void input ( String *a, int limit, int &i )
//value of i will be passed out as size
{
static char buffer[100];
cout << "\nenter data:";
for ( i = 0; i < limit; i++ )
if ( scanf( "%s", buffer ) == EOF )
break;
else
a[i] = String ( buffer );
}

void output( String *a, int size )
{

cout << "\nlist : ";
for ( int i = 0; i < size; i++ )
a[i].prints();
//cout << a[i];
cout << endl;
}

int main()
{
const int max = 10;
String list[max];

int size = 0;

String x, y;
input ( list, max, size );
sort ( list, size );
output ( list, size );

return 0;
}
Цитата:
#ifndef STR_H
#define STR_H
#include

using namespace std;

class String {
protected:
char *str;
public:
//constructors
String(); //create an empty string
~String(); // cleanup
String ( char *init ); //initializes str to string init
int length(); //returns length of this string
void prints(); //prints this string
bool operator < ( String &s ); //if this String < String s returns true
//else false
int find_pat( String pattern );//returns an index i such that pattern
//matches the substring of this string that
//begins at position i, returns -1 if no match
void operator << ( ostream &out );
};

#endif
Цитата:
#include "str.h"

String::String()
{
str = new char[1]; //points to new node
*str = 0; //initializes to NULL string
}

String::String( char *s )
{
if ( str ) delete[] str;
str = new char[ strlen( s ) + 1 ];
strcpy( str, s );
}

String::~String()
{
if ( str ) delete[] str;
}

int String::length()
{
return( strlen( str ) );
}

void String::prints()
{
cout << str << "\n";
}

bool String::operator < ( String &s )
{
return ( strcmp( str, s.str ) < 0 );
}

//ostream & String::operator << ( ostream &out )
void String::operator << ( ostream &out )
{
out << str << endl;
//return out;
discorsa вне форума Ответить с цитированием
Старый 13.10.2010, 01:00   #2
_ILYA_
Пользователь
 
Аватар для _ILYA_
 
Регистрация: 12.10.2010
Сообщений: 79
По умолчанию

ты не могла бы оформить по лучше а то в такой мешанине просто лень даже разбиратся
Имею хитрый план по личному обогащению
_ILYA_ вне форума Ответить с цитированием
Старый 13.10.2010, 06:14   #3
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

1. Берем опорный элемент из массива(лучше брать середину) a[i].
У нас получилось 3 подмножества - левая, правая, и середина.
=<a[i]... ...|a[i]|... ... >=a[i]
2. помещаем все элементы меньше либо равные a[i] влево от него, a элементы >= a[i]
вправо от a[i]
3. Рекурсивно сортируем подмассивы меньше опорного и больше опорного, пока колличество элементов в них > 2.
include <Qt>

Последний раз редактировалось sever-42; 13.10.2010 в 06:16.
sever-42 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод пузырька Darknes Общие вопросы C/C++ 13 29.06.2010 14:20
Метод пузырька gennc Общие вопросы C/C++ 2 15.06.2010 17:57
Метод пузырька(c++) ioda1986 Помощь студентам 1 25.02.2010 10:42
Сортировка методом пузырька fygas1991 Общие вопросы C/C++ 5 15.11.2009 21:39
Метод пузырька 13Anka07 Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2009 19:36