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

Одномерные массивы: задачи сортировок элементов массива - C++

Восстановить пароль Регистрация
 
adiiiik
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 42
06.07.2015, 18:23     Одномерные массивы: задачи сортировок элементов массива #1
Задание: Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию. Использовать три метода сортировки.

в конце нужно сделать примерно так: массив: -2, 0, 5, -4, 6, 1; отсортированный массив: -2, 0, 0, -4, 5, 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
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
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
void Vvod(int* arrA,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"arrA["<<i<<"]= ";
        cin >> arrA[i];
    }
}
void Print(int *arrA, int n)
{
    //cout<<"\nMassiv = ";
    for(int i = 0; i < n ;i++)
    {
        cout<<arrA[i]<< ", ";
    }
    cout<<endl;
}
void BubbleSortVozr(int *arrA, int n) //сортировка по возрастанию пузырек
{
    int pol=0;
    for(int i = 0; i < n - 1; ++i)
    {
        for(int j = 0; j < n - 1; ++j)
        {
            if (arrA[j + 1] < arrA[j])
            {
                pol = arrA[j + 1];
                arrA[j + 1] = arrA[j];
                arrA[j] = pol;
            }
        }
    }}
void BubbleSortUb(int* arrA, int n){ //сортировка по убыванию пузырек
    int otr = 0;
    for(int i = 0; i < n - 1; ++i)
    {
        for(int j = 0; j < n - 1; ++j)
        {
            if (arrA[j + 1] > arrA[j])
            {
                otr = arrA[j + 1];
                arrA[j + 1] = arrA[j];
                arrA[j] = otr;
            }
        }
    }
}
void SelectionSortPol (int* arrA, int n) { // сортировка методом простого выбора по возрастанию
  int min,pol;
  for (int i=0;i<n-1;i++) {
  min=i;
    for (int j=i+1;j<n;j++){
      if (arrA[j]<arrA[min])
        min=j;
     }
      pol=arrA[i];
      arrA[i]=arrA[min];
      arrA[min]=pol;
  }
}
void SelectionSortOtr (int* arrA, int n) { // сортировка методом простого выбора по убыванию
  int min,otr;
  for (int i=0;i<n-1;i++) {
  min=i;
    for (int j=i+1;j<n;j++){
      if (arrA[j]>arrA[min])
        min=j;
     }
      otr=arrA[i];
      arrA[i]=arrA[min];
      arrA[min]=otr;
  }
}
// сортировка методом простого включения по возраст
void InsertSortPol (int* arrA,int  n) {
  int  pol, j;
  for (int i=0;i<n;i++) {
    pol=arrA[i];
    for (int j=i-1; j>=0 && arrA[j]>pol; j--)
      arrA[j+1]=arrA[j];
      arrA[j+1]=pol;
  }
}
void InsertSortOtr (int* arrA,int  n) {
  int  otr, j;
  for (int i=0;i<n;i++) {
      otr=arrA[i];
    for (int j=i-1; j>=0 && arrA[j]<otr; j--)
      arrA[j+1]=arrA[j];
      arrA[j+1]=otr;
  }
}
int main()
{
    int arrA[100], n,Pol[100], Otr[100],pol=0, otr=0;
    cout << "Vvedite razmernost massivov: ";
    cin >> n;
    Vvod(arrA, n);
    Print(arrA, n);
    for (int i=0; i<n; i++)
        if (arrA[i]>=0)
        {Pol[pol]=arrA[i];
            pol++;
        }
        else
        {
            Otr[otr]=arrA[i];
            otr++;
        }
 
    BubbleSortVozr(Pol,pol);
    cout << "\nMetod puzirka: ";
    cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
    BubbleSortUb(Otr,otr);
    cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr, otr);
    SelectionSortPol(Pol, pol);
    cout << "\n\nMetod prostogo vibora:";
    cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
    SelectionSortOtr(Otr, otr);
    cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr,otr);
 InsertSortPol(Pol, pol);
 cout << "\n\nMetod prostogo vklucheniya:";
 cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
 InsertSortOtr(Otr, otr);
 cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr,otr);
 
 
 for (int i=0; i<n; i++)
     for (int j=0; j<n;j++)
         for (int u=0;u<n;u++)
     {if (arrA[i]> 0 && Pol[j]>0 && arrA[i]> Pol[j])
 arrA[i]=Pol[j];
if (arrA[i] < 0 && Otr[u]<0 && arrA[i]<Otr[u])
         arrA[i]= Otr[u];}
 
 Print(arrA,n);
 
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 18:23     Одномерные массивы: задачи сортировок элементов массива
Посмотрите здесь:

C++ Одномерные массивы: Найти среднее арифметическое всех элементов массива
Одномерные массивы: вычисление сумм элементов C++
C++ Одномерные массивы. Вывести на экран массив, составленный из номеров элементов исходного массива, которые равны заданному значению.
C++ Как называются массивы элементов для сравнения времени работы сортировок?
C++ Найти наименьший элемент массива X среди тех, которые не являются элементами массива Y(X,Y-одномерные массивы)
C++ Одномерные массивы. Образуйте массив из элементов массива А(М), каждый из которых больше любого элемента массива B (N)
C++ Одномерные массивы (вычислить произведение элементов, сумму элементов массива между первым и последним нулевыми, преобразовать)
Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево) C++
Одномерные массивы. Найти, сколько элементов массива A={a[i]} удовлетворяют условию с <= a[i] <= d C++
C++ Одномерные массивы. Изменение исходного массива
C++ Задачи на одномерные массивы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 505
Записей в блоге: 1
06.07.2015, 23:37     Одномерные массивы: задачи сортировок элементов массива #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
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
#include <cstdio>
#include <iostream>
using namespace std;
 
 
void bubbleSortPlus(int *a, int length) { // Сортируем положительные по возрастанию
    for (int j = 0; j < length - 1; j++) {
        for (int i = 0; i < length - j - 1; i++) {
            if (a[i] > a[i + 1]) {
                int b = a[i]; //change for elements
                a[i] = a[i + 1];
                a[i + 1] = b;
            }
        }
    }
}
 
void bubbleSortSubzero(int *a, int length) {  // Сортируем отрицательные по убыванию
    for (int j = 0; j < length - 1; j++) {
        for (int i = 0; i < length - j - 1; i++) {
            if (a[i+1] < a[i]) {
                int b = a[i]; //change for elements
                a[i] = a[i + 1];
                a[i + 1] = b;
            }
        }
    }
}
void printArray(int* M, int sz)
{
    for (int k = 0; k < sz; k++)
    {
        cout << " " << M[k];
    }
    
}
int  main()
{
    setlocale(0, "");
    
    int mas[] = { 6, -8, 2, 9, 4, 12, -24, 0,9,12 };
    int masSize = (sizeof(mas) / sizeof(int)); // определяем число элементов в массиве
    int subZeroCount = 0;
    for (int k = 0; k < masSize; k++)
    {
        if (mas[k] < 0)subZeroCount++;
    }
    int* subMas = new int[subZeroCount]; // Создаем динамически два доп. массива
    int* pMas = new int[masSize - subZeroCount];
    int pointSub = 0;
    int pointPlus = 0;
    for (int k = 0; k < masSize; k++) // Сортируем массив на положительные и отрицательные числа
    {
        if (mas[k] < 0){
            subMas[pointSub] = mas[k];
            pointSub++;
        } else 
        {
            pMas[pointPlus] = mas[k];
            pointPlus++;
        }
    }
    bubbleSortPlus(pMas, pointPlus);
    bubbleSortSubzero(subMas, pointSub);
    cout << "Ваш массив: ";
    printArray(mas, masSize);
    cout << endl;
    cout <<"Сортируем пузырьком: ";
    cout << endl;
    printArray(subMas, pointSub);
    printArray(pMas, pointPlus);
    cout << endl;
    system("pause");
    delete[] subMas; // Удаляем дополнительные массивы
    delete[] pMas;
    return 0;
}


Добавлено через 1 минуту
Исходный массив не изменяется.
Yandex
Объявления
06.07.2015, 23:37     Одномерные массивы: задачи сортировок элементов массива
Ответ Создать тему
Опции темы

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