Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Если сегодня не поможете завтра отчислят...

7.3K
28 мая 2008 года
vova_b
49 / / 24.09.2006
Привет! Я уже создавал темку вот найти немогу, суть проблемы, есть MSD сортировка, сортирует буквы по алфавиту, а как сделать что сортировала слова по алфавиту????? Я очень очень прошу помочь
Код:
#include <iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
clock_t start,finish;


void createCounters(char *, long *, long );
void radixPass(short , long , char *, char *, long *);
void radixSort(char* &, long );
void printMass(char [], char );

main()
{
  char a[] ="qwertyuiopasdfghjklzqwertyuiopasdfghjklzqwertyuiopasdfghjklzqwertyuiopasdfgh
jklz";

  printMass(a, sizeof(a)/sizeof(char));
  start=clock();
  for(int i=0;i<24000;i++){
  radixSort(a, sizeof(a)/sizeof(char));

  finish=clock();          }
  printMass(a, sizeof(a)/sizeof(char));

cin.get();
return 0;
}

void createCounters(char *data, long *counters, long N)
{
  memset( counters, 0, 256*sizeof(int)*sizeof(long) );

  char *bp = (char*)data;
  char *dataEnd = (char*)(data + N);
  short i;

    while ( bp != dataEnd )
   {
        for (i=0; i<sizeof(char);i++)
            counters[256*i + *bp++]++;
    }
}

void radixPass (short Offset, long N, char *source, int *dest, long *count)
{
  char *sp;
  long s, c, i, *cp;
  char *bp;

  s = 0;
  cp = count;
  for (i = 256; i > 0; --i, ++cp)
  {
      c = *cp;
      *cp = s;
      s += c;
  }

  bp = (char *)source + Offset;
  sp = source;
  for (i = N; i > 0; --i, bp += sizeof(char) , ++sp)
  {
      cp = count + *bp;
      dest[*cp] = *sp;
      ++(*cp);
  }
}

void radixSort (char* &in, long N)
{
  int *out = new int[N];
  int *temp = new int[N];
  long *counters = new long[sizeof(int)*256], *count;
  createCounters(in, counters, N);

  for (short i=0; i<sizeof(char); i++)
  {
      count = counters + 256*i;

      if ( count[0] == N ) continue;

      radixPass (i, N, in, out, count);
    for(int i = 0;i < N; ++i)
    {
     temp=in;
     in=out;
     out=temp;
    }
  }

  delete out;
  delete counters;
  delete temp;
}

void printMass(char A[], char f)
{
  cout << "\nMass:";
  for(int i = 0; i < f; i++)
  cout << ' ' << A;
  cout << '\n';

  cout <<"time"<<(finish-start);
}
2.0K
29 мая 2008 года
BroKeR
163 / / 04.05.2006
Элементарно. Решение в лоб-делаешь структуру в которой храниться в одном поле первая буква слова, а во втором слово. Сортируешь по первому полю, выводишь второе. В чем проблема? Вот алгоритм сортировки, надо маленько подправить, для твоего задания, но вообще проблем быть не должно
Код:
template <class T >
inline void swap (T array[], int pos1, int pos2) {
    T temp;
    temp=array[pos1];
    array[pos1]=array[pos2];
    array[pos2]=temp;
}

template <class T>
inline void print(T array[],int size) {
    for (int i=0;i<size;++i) cout<<array<<" ";
}

template <class T>
inline void bubble_sort(T array[], int size) {
    int i,j;
    for (i=0;i<size-1;++i)
        for (j=size-1;j>i;--j)
            if (array[j-1]>array[j]) swap(array,j-1,j);
}

int main()
{
    int k;
    int array[]={4,2,6,5,8,9,1,3,7};
    print(array,9);
    bubble_sort(array,9);
    print(array,9);
    cout<<endl;
    cin>>k;
    return 0;
}
7.3K
29 мая 2008 года
vova_b
49 / / 24.09.2006
А как сортировать не числа а слова по алфавиту???
2.0K
29 мая 2008 года
BroKeR
163 / / 04.05.2006
Цитата: BroKeR
Решение в лоб-делаешь структуру в которой храниться в одном поле первая буква слова, а во втором слово. Сортируешь по первому полю, выводишь второе.



Читаем внимательно.

7.3K
29 мая 2008 года
vova_b
49 / / 24.09.2006
Слуш ты можешь дописать я могу заплатить, просто мне очень надо а времени самому писать нет? (Должна быть именно msd сортировка)!
27K
30 мая 2008 года
David_K800i
36 / / 27.05.2008
попробуй хеш функцию создать
если не отчислили еще :(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог