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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
#1

программа порозрядной сортировки - C++

19.04.2012, 11:44. Просмотров 876. Ответов 11
Метки нет (Все метки)

Напишите пожалуйста алгоритм и програмку для порозрядного сортирования
плииз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2012, 11:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос программа порозрядной сортировки (C++):

Программа сортировки - C++
Помогите пожалуйста написать программу для сортировки массива, которая парные элементы ставит в начало массива а непарные в конец.

Программа для сортировки - C++
Здраствуйте, необходимо написать программу в которуй будет 12 случайных элементов, затем нужно будет сложить рядом стоящие элементы, и...

Программа сортировки списка - C++
Помогите сделать программу пожалуйста. Программа считывает информацию о студентах (имя, оценка (от одного до десяти) ) и выводит их...

программа сортировки методом пузырька - C++
Доброго времени суток! Прошу помощи в написании программы с требованиями: •Входные данные – текстовый файл. •Выходные данные –...

Программа сортировки массива методом пузырька - C++
Здравствуйте! Пожалуйста, помогите написать программу! Вот задание: Создать на C++ Builder программу сортировки массива в порядке...

Демонстрационная программа сортировки методом «пузырек» - C++
Демонстрационная программа сортировки методом «пузырек» Размер массива не превышает 40 и задается с клавиатуры. Заполнение массива с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
19.04.2012, 11:45 #2
Алгоритмы сортировок
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
19.04.2012, 16:16  [ТС] #3
Nekto, а програмку? я же не шарю в этом
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
22.04.2012, 19:24  [ТС] #4
можете написать програмку для порозрядной сортировки?
надо чтобы можно было ввести даные, оно посортировало..
и вывело результат
алгоритм есть

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
 
typedef struct slist_ { 
  long val;
  struct slist_ *next; 
} slist;
 
// функция сортировки возвращает указатель на начало отсортированного списка 
slist *radix_list(slist *l, int t) {
  //  t - разрядность (максимальная длина числа) 
  int i, j, d, m=1;
  slist *temp, *out, *head[10], *tail[10];
  out=l;
 
  for (j=1; j<=t; j++) { 
    for (i=0; i<=9; i++)
      head[i] = (tail[i]=NULL);
 
    while ( l != NULL ) {
      d = ((int)(l->val/m))%(int)10;
      temp = tail[d];
      if ( head[d]==NULL ) head[d] = l;
      else temp->next = l;
      temp = tail[d] = l;
      l = l->next;
      temp->next = NULL;
    }
    for (i=0; i<=9; i++)
      if ( head[i] != NULL ) break;
    l = head[i];
    temp = tail[i];
    for (d=i+1; d<=9; d++) {
      if ( head[d] != NULL) { 
        temp->next = head[d];
        temp = tail[d];
      }
    }
    m*=10;
  }
  return (out);
}
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
22.04.2012, 20:23 #5
сортировка списка???
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
22.04.2012, 20:27  [ТС] #6
Kuzia domovenok,
чисел
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
23.04.2012, 22:27  [ТС] #7
можете написать програмку для порозрядной сортировки?
надо чтобы можно было число, оно посортировало..
и вывело результат
Очень надо..
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
24.04.2012, 08:22 #8
Байтовая интепретация LSD-алгоритма поразрядной сортировки на С++:

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
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
void swaps(char* psz1, char* psz2);
bool iseqkey(char* psz1, char* psz2, int pos);
 
int main(void)
{
    static char ppsz[10][256] = { "apricot", "apple", "berry", "bagage", "back", "cran", "count", "cat", "dog", "dig" };
 
    int q = 0;
    while (q < 256)
    {
    for (int i = 0; i < 10; i++)
        for (int k = i+1; k < 10; k++)
            if (ppsz[k][q] < ppsz[i][q])
            {
                if (!iseqkey(ppsz[i],ppsz[k],q) && q > 0) 
                    continue;
                
                swaps((char*)ppsz[k],(char*)ppsz[i]);
            }
    q++;
    }
 
    for (int n = 0; n < 10; n++)
        printf("%s\n",ppsz[n]);
 
    printf("\n");
 
    _getch();
 
    return 0;
}
 
bool iseqkey(char* psz1, char* psz2, int pos)
{
    for (int i = pos-1; i >= 0; i--)
        if (psz1[i] != psz2[i])
            return false;
 
    return true;
}
 
void swaps(char* psz1, char* psz2)
{
    static char* psztemp = new char[256];
    strcpy(psztemp, psz1);
    strcpy(psz1, psz2); 
    strcpy(psz2, psztemp);
}
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
24.04.2012, 11:05 #9
Реализация байт-интерпретации LSD-алгоритма порозрядной сортировки на С++ на примере
сортировки массива строк.


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
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
void swaps(char* psz1, char* psz2);
bool iseqkey(char* psz1, char* psz2, int pos);
 
int main(void)
{
    static char ppsz[10][256] = { "apricot", "apple", "berry", "bagage", "back", "cran", "count", "cat", "dog", "dig" };
 
    int q = 0;
    while (q < 256)
    {
    for (int i = 0; i < 10; i++)
        for (int k = i+1; k < 10; k++)
            if (ppsz[k][q] < ppsz[i][q])
            {
                if (!iseqkey(ppsz[i],ppsz[k],q) && q > 0) 
                    continue;
                
                swaps((char*)ppsz[k],(char*)ppsz[i]);
            }
    q++;
    }
 
    for (int n = 0; n < 10; n++)
        printf("%s\n",ppsz[n]);
 
    printf("\n");
 
    _getch();
 
    return 0;
}
 
bool iseqkey(char* psz1, char* psz2, int pos)
{
    for (int i = pos-1; i >= 0; i--)
        if (psz1[i] != psz2[i])
            return false;
 
    return true;
}
 
void swaps(char* psz1, char* psz2)
{
    static char* psztemp = new char[256];
    strcpy(psztemp, psz1);
    strcpy(psz1, psz2); 
    strcpy(psz2, psztemp);
}
Добавлено через 1 час 3 минуты
Битовая интерпретация алгоритма поразрядной сортировки на С++:

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
#define bit(reg,n) ((reg & ((int)pow((double)2,n))) ? 1 : 0) \
 
void printb(char ch);
void swap(char& ch1, char& ch2);
bool iseqkey(char& ch1, char& ch2, int pos);
 
int main(void)
{
    static char psz[256] = "5143289760";
 
    for (int q = 7; q >= 0; q--)
        for (int i = 0; psz[i] != '\0'; i++)
            for (int k = i+1; psz[k] != '\0'; k++)
                if (bit(psz[k],q) < bit(psz[i],q))
                {
                    if (!iseqkey(psz[i],psz[k],q) && q < 7)
                        continue;
 
                    swap(psz[k], psz[i]);
                }
 
    for (int i = 0; psz[i] != '\0'; i++)
    { 
        printf("%c - ",psz[i]); 
        printb(psz[i]); 
    }
    
    printf("\n");
 
    printf("%s\n",psz);
 
    _getch();
 
    return 0;
}
 
bool iseqkey(char& ch1, char& ch2, int pos)
{
    for (int i = pos+1; i < 8; i++)
        if (bit(ch1,i) != bit(ch2,i))
            return false;
 
    return true;
}
 
void swap(char& ch1, char& ch2)
{
    char temp = ch1;
    ch1 = ch2;
    ch2 = temp;
}
 
void printb(char ch)
{
    int size = sizeof(char) * 8;
    int *bits = new int[size];
    memset((void*)bits, 0, size);
 
    for (int n = 0; n < size; n++)
        bits[n] = 0;
 
    for (int i = 0; ch >= 1; i++, ch/=2)
        bits[i] = ch % 2;
    
    for (int k = size-1; k >= 0; k--)
        printf("%d ",bits[k]);
    printf("\n");
}
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
24.04.2012, 15:01  [ТС] #10
zitxbit, а можешь сделать, чтобы вместо static char ppsz[10][256] = { "apricot", "apple", "berry", "bagage", "back", "cran", "count", "cat", "dog", "dig" };
можно было ввести числа, а потом оно отсортировало и вывело результат?
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
24.04.2012, 15:07 #11
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <conio.h>
#include <math.h>
 
#define bit(reg,n) ((reg & ((int)pow((double)2,n))) ? 1 : 0) \
 
void printb(char ch);
void swap(char& ch1, char& ch2);
bool iseqkey(char& ch1, char& ch2, int pos);
 
int main(void)
{
    static char psz[256] = "5143289760";
 
    for (int q = 7; q >= 0; q--)
        for (int i = 0; psz[i] != '\0'; i++)
            for (int k = i+1; psz[k] != '\0'; k++)
                if (bit(psz[k],q) < bit(psz[i],q))
                {
                    if (!iseqkey(psz[i],psz[k],q) && q < 7)
                        continue;
 
                    swap(psz[k], psz[i]);
                }
 
    for (int i = 0; psz[i] != '\0'; i++)
    { 
        printf("%c - ",psz[i]); 
        printb(psz[i]); 
    }
    
    printf("\n");
 
    printf("%s\n",psz);
 
    _getch();
 
    return 0;
}
 
bool iseqkey(char& ch1, char& ch2, int pos)
{
    for (int i = pos+1; i < 8; i++)
        if (bit(ch1,i) != bit(ch2,i))
            return false;
 
    return true;
}
 
void swap(char& ch1, char& ch2)
{
    char temp = ch1;
    ch1 = ch2;
    ch2 = temp;
}
 
void printb(char ch)
{
    int size = sizeof(char) * 8;
    int *bits = new int[size];
    memset((void*)bits, 0, size);
 
    for (int n = 0; n < size; n++)
        bits[n] = 0;
 
    for (int i = 0; ch >= 1; i++, ch/=2)
        bits[i] = ch % 2;
    
    for (int k = size-1; k >= 0; k--)
        printf("%d ",bits[k]);
    printf("\n");
}
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
24.04.2012, 15:53  [ТС] #12
zitxbit,
библиотеку stdio.h забыл
не работает.. пишет сбой построения..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2012, 15:53
Привет! Вот еще темы с ответами:

Программа для сортировки массива строк - C++
Нужно написать программу для сортировки строк, используя указатели. Программа должна считать количество элементов массива (вот тут и...

Программа сортировки матрицы, работает только для квадратных - C++
Помогите исправить, пожалуйста, программа должна работать для любых значений строк и столбцов, где логическая ошибка?( Постановка задачи:...

Где тут ошибка? Программа сортировки массива по возрастанию - C++
программа сортирует массив по возрастанию. кусок кода который выполняет сортировку взял с инета. но преп придрался к оформлению и после...

Не работает программа сортировки,кто нибудь поймет почему? - C++
программа должна брать фамилии из одного файла,сортировать их по алфавиту и выводить в новый файл выдает ошибку при компиляции .не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.04.2012, 15:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru