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

Шейкерная сортировка + сортировка слиянием - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Использование библиотеки bass и примеры кода http://www.cyberforum.ru/cpp-beginners/thread677888.html
Мне очень нннада хотя бы консольный примерчик использования bass'a, по поисковику уже 2 месяца роюсь, ничего не понятно ( еще лучше, если в Windows Forms, если что, то я пишу в Visual C++ 10
C++ Преобразовать массив, увеличив его последнию серию найбольшей длинны на один элемент Дан целочисленный массив размера N преобразовать массив увеличив его последнию серию найбольшей длинны на один элемент. http://www.cyberforum.ru/cpp-beginners/thread677881.html
C++ Найти и исправить ошибки в приведенном коде
//#include <stdafx.h> #include <iostream> #include <math.h> using namespace std; void main () { setlocale (LC_ALL, "Russian"); system ("color 70");
C++ Нарисовать Блок-схему
Нужно нарисовать блок-схему на эту задачу: Вычислить значения у, соответствующие каждому значению х ( xn≤x≤xk, шаг изменения x равен dx) по формуле у= 3 ∣a−x2∣ ln2+a2+x4  2 . Вычислить сумму...
C++ Низкоуровневые тонкости программирования на С++ http://www.cyberforum.ru/cpp-beginners/thread677863.html
Здравствуйте. Хотел бы узнать у опытных программистов, где можно найти литературу по более продвинутым вопросам программирования с С++, т.е. таких как, выделение памяти при создании экземпляров...
C++ Непонятно где ошибка в программе Программа должна записывать в output.txt содержимое из файлов заданных через аргумент. printkey 1 - это типа "ассерта" #include <stdio.h> int main(int argc, char *argv) { FILE *pFile = NULL;... подробнее

Показать сообщение отдельно
warspirit
3 / 3 / 0
Регистрация: 30.03.2011
Сообщений: 61

Шейкерная сортировка + сортировка слиянием - C++

22.10.2012, 22:42. Просмотров 1568. Ответов 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// ConsoleApplication15.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<conio.h>
 
#pragma hdrstop
using namespace std;
 
// функция сравнения:
bool compare_less(int Left, int Right)
{
    if (Left<Right)
        return true;
    else
        return false;   
}
 
 
void Swap(int Arr[], int i) //Поменять местами i-й и i-1-й элементы массива Arr
{
    int temp;       //буфер
    temp = Arr[i];
    Arr[i] = Arr[i-1];
    Arr[i-1] = temp;
}
void Swap(char Arr[], int i) // перестановка для  символьного массива
 
{
    int temp;       //буфер
    temp = Arr[i];
    Arr[i] = Arr[i-1];
    Arr[i-1] = temp;
}
 
void ShakerSort(int Arr[], int Start, int N)
{
    int Left,Right; //границы сортировки
    int Last;       //место последней перестановки
 
    Left=Start;
    Right = N-1;
    Last = N-1;
 
    do
    {
        //Сдвигаем к концу массива "легкие элементы"
        for (int i =Right; i >= Left; i--)
        {
            if (Arr[i-1]>Arr[i])
            {
                Swap(Arr, i);
                Last = i; //Запомнить место последней перестановки
            }
        }
 
        Left = Last + 1;
 
        //Сдвигаем к началу массива "тяжелые элементы"
        for (int i =Left; i <= Right; i++)
        {
            if (Arr[i-1]>Arr[i])
            {
                Swap(Arr, i);
                Last = i; //Запомнить место последней перестановки
            }
        }
 
        Right = Last - 1;
    }
    while (compare_less( Left, Right));
}
 
void ShakerSort(char Arr[], int Start, int N) // сортировка символьного массива
 
{
    int Left,Right; //границы сортировки
    int Last;       //место последней перестановки
 
    Left=Start;
    Right = N-1;
    Last = N-1;
 
    do
    {
        //Сдвигаем к концу массива "легкие элементы"
        for (int i =Right; i >= Left; i--)
        {
            if (Arr[i-1]>Arr[i])
            {
                Swap(Arr, i);
                Last = i; //Запомнить место последней перестановки
            }
        }
 
        Left = Last + 1;
 
        //Сдвигаем к началу массива "тяжелые элементы"
        for (int i =Left; i <= Right; i++)
        {
            if (Arr[i-1]>Arr[i])
            {
                Swap(Arr, i);
                Last = i; //Запомнить место последней перестановки
            }
        }
 
        Right = Last - 1;
    }
    while (compare_less( Left, Right));
} 
 
 
void ArrayOutput(int* Arr, int Start, int N) //Вывод элементов массива на консоль
{
    for (int i = 0; i < N; i++)
    {
        cout << Arr[i] << " ";
    }
    
}
void ArrayOutput(char* Arr, int Start, int N) //Вывод элементов символьного массива на консоль
{
    for (int i = 0; i < N; i++)
    {
        cout << Arr[i] << " ";
    }
    
}
 
 
 
int main(int argc, TCHAR* argv[])
{
    const int Count = 10;
    int TestArr[Count] = {9,8,7,6,5,4,3,2,1,0};
 
    int TestArr_2[Count] = {-9,-8,-7,16,15,-4,-3,20,12,11};
    
    const int Count_C=11;
    char TestArr_C[Count_C] = {"baecfdighl"};
 
    ShakerSort(TestArr,0,Count);
    ShakerSort(TestArr_C,0,Count_C);
 
 
    ArrayOutput(TestArr,0,Count);
    cout<<'\n';
    ArrayOutput(TestArr_C,0,Count_C);
    cout<<'\n';
 
    return 0;
}
Помогите написать функцию ,для сортировки слиянием для двух массивов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru