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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
#1

Челночная сортировка - C++

10.05.2012, 21:44. Просмотров 2807. Ответов 17
Метки нет (Все метки)

Дан массив фамилий, требуется его упорядочить в алфавитном порядке, используя челночную сортировку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2012, 21:44     Челночная сортировка
Посмотрите здесь:

Челночная сортировка - C++
Дан массив размером 10,000 сделать челночную сортировку!

челночная сортировка - C++
доброго времени суток! кому не сложно объяснить по поводу алгоритма челночной сортировки? задание: сортировка списка студентов...

Челночная сортировка / Список - C++
Я бы хотел попросить о помощи более опытных людей в програмирование. сам пробовал- не получилось. из-за не достатка опыта. а надо и...

Челночная сортировка элементов массива по убыванию - C++
Есть пример сортировки по возрастанию, не пойму как сделать сортировку по убыванию

Алгоритмы сортировки обменом (метод «пузырька», челночная сортировка) - Turbo Pascal
Сортировка данных. Алгоритмы сортировки обменом (метод «пузырька», челночная сортировка). Сравнение указанных алгоритмов по скорости...

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) - C#
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью...

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками» - Pascal
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array of integer; Var i,b,n,j,a:...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
11.05.2012, 16:32     Челночная сортировка #2
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
#define N 10
 
void swap(int& n1, int& n2);
 
int main()
{
    int A[10] = { 7, 9, 6, 1, 5, 4, 3, 2, 8, 9 };
 
    for (int i = 0; i < N-1; i++)
        if (A[i] > A[i+1])
        {
            swap(A[i],A[i+1]);
            for (int k = i; (A[k] < A[k-1]) && (k >= 1); k--)
                swap(A[k],A[k-1]);
        }
 
    for (int q = 0; q < N; q++)
          printf("%d ",A[q]);
    printf("\n");
 
    return 0;
}
 
void swap(int& n1, int& n2)
{ int _t = n1; n1 = n2; n2 = _t; }
http://liveworkspace.org/code/b88b99...ee64e48706c5ac
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
12.05.2012, 18:06  [ТС]     Челночная сортировка #3
Это именно челночная сортировка?
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
12.05.2012, 19:30     Челночная сортировка #4
Да это именно челночная сортировка. http://wenegred.ru/forum/15-84-1
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
12.05.2012, 23:15  [ТС]     Челночная сортировка #5
А как теперь все это реализовать со структурой данных? Как обращаться к конкретному эл-ту структуры?
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
13.05.2012, 09:22     Челночная сортировка #6
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
#define N 10
 
typedef struct Nums
{
    int n;
} NUMS;
 
void swapn(NUMS& n1, NUMS& n2); 
 
int main()
{
   static NUMS nums[] = { { 7 }, { 9 }, { 6 }, { 1 }, { 5 }, { 4 }, { 3 }, { 2 }, { 8 }, { 9 } }; 
  
   for (int i = 0; i < N-1; i++)
        if (nums[i].n > nums[i+1].n)
        {
            swapn(nums[i], nums[i+1]);
            for (int k = i; (nums[k].n < nums[k-1].n) && (k >= 1); k--)
                swapn(nums[k],nums[k-1]);
 
        }
 
    for (int q = 0; q < N; q++)
          printf("%d ",nums[q].n);
    printf("\n");
 
    return 0;
}
 
void swapn(NUMS& n1, NUMS& n2)
 { NUMS _tn = n1; n1 = n2; n2 = _tn; }
http://liveworkspace.org/code/e51318...a8dbf208c43ba5
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
13.05.2012, 14:54  [ТС]     Челночная сортировка #7
Хорошо. А если структура хранится в файле, т.е. она уже есть?
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
13.05.2012, 15:17     Челночная сортировка #8
В каком файле текстовом или бинарном?

Добавлено через 22 минуты
Запись структуры NUMS в бинарный файл input.dat:

C++
1
2
3
4
5
6
7
8
    const char* filename = "input.dat";
    ofstream ofs(filename, ofstream::binary);
 
    NUMS* pNums = new NUMS[N];
    for (int i = 0; i < N; i++)
        pNums[i].n = rand() % 9 + 1;
 
    ofs.write((char*)pNums, sizeof(NUMS) * N);
Чтение структуры NUMS из бинарного файла input.dat:

C++
1
2
3
4
5
6
7
    NUMS* pNums = new NUMS[N];
 
    ifstream ifs(filename,ifstream::binary);
    ifs.read((char*)pNums, sizeof(NUMS) * N);
 
    for (int i = 0; i < N; i++)
        printf("%d ",pNums[i].n);
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
17.05.2012, 16:28  [ТС]     Челночная сортировка #9
А для фамилий как? В файле есть структура в которой массив фамилий, необходимо отсортировать по возрастанию
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
19.05.2012, 19:55  [ТС]     Челночная сортировка #10
??????????????????/????
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
19.05.2012, 20:37     Челночная сортировка #11
Как только сделаю размещу. Ждите.

Добавлено через 22 минуты
Как только сделаю сразу размещу, ждите.

Добавлено через 17 минут
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
#include <string.h>
#include <locale.h>
 
#define N 10
 
typedef struct Person
{
    char name[256];
} PERSON;
 
void swaps(char* psz1, char* psz2);
bool iseqkey(char* psz1, char* psz2, int pos);
 
int main()
{
   setlocale(LC_ALL,"Russian");
 
   static PERSON pers[] = { { "Ivanov"  }, { "Petrov"  }, { "Stepanov" }, { "Sidorov" }, 
                            { "Rybakov" }, { "Abramov" }, { "Archipov" }, { "Pavlov"  }, 
                            { "Petuhov" }, { "Isakov"  } }; 
  
   for (int q = 0; q < 256; q++)
       for (int i = 0; i < N-1; i++)
            if (pers[i].name[q] > pers[i+1].name[q] && 
                iseqkey(pers[i].name,pers[i+1].name, q))
            {
                swaps(pers[i].name, pers[i+1].name);
                for (int k = i; (pers[k].name[q] < pers[k-1].name[q]) && (k >= 1); k--)
                     if (iseqkey(pers[k].name,pers[k-1].name, q))
                         swaps(pers[k].name,pers[k-1].name);
            }
 
    for (int q = 0; q < N; q++)
        printf("%s\n",pers[q].name);
 
    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);
}
http://liveworkspace.org/code/f90d74...47e3084ff25f4a
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
20.05.2012, 14:42  [ТС]     Челночная сортировка #12
Фамилии уже есть в бинарном файле
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.05.2012, 16:21     Челночная сортировка #13
Формат бинарного файла?
kompnet
41 / 1 / 0
Регистрация: 11.10.2011
Сообщений: 112
20.05.2012, 17:09  [ТС]     Челночная сортировка #14
. txt

Добавлено через 11 минут
Я вам в личку прислал сообщение
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2012, 17:11     Челночная сортировка
Еще ссылки по теме:

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка - Prolog
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка вставкой - быстрая сортировка

1)Бинарный поиск 2)Сортировка включением 3)Шейкерная сортировка 4)Сортировка разделением - Pascal
1)В заданном массиве К(N) найти индексы элементов, которые кратны минимальному значению элемента массива. 2)Задан массив AX (N). Добавить...

Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка) - Turbo Pascal
Помогите написать программу для сортировки массива целых чисел A(n) по убыванию(используя метод обменная сортировка). Или хотя бы без этого...

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Быстрая сортировка, ситуация, при которой сортировка работает не корректно - Turbo Pascal
Procedure sort(m, l: Integer); Var i, j, x, w: Integer; Begin i := m; j := l; x := ar; Repeat While...


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

Или воспользуйтесь поиском по форуму:
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.05.2012, 17:11     Челночная сортировка #15
Так я не понял бинарный файл или текстовый (.txt)?
Yandex
Объявления
20.05.2012, 17:11     Челночная сортировка
Ответ Создать тему
Опции темы

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