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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу для вычисления суммы n членов http://www.cyberforum.ru/cpp-beginners/thread1494101.html
Составить программу для вычисления суммы n членов ряда согласно условию Добавлено через 8 минут x+\frac{{x}^{5}}{5!}+\frac{{x}^{9}}{9!}+\frac{{x}^{13}}{13!}+...
C++ Написать блок-схему и программу вычисления функции на заданном промежутке и построить график этой функции написать блок-схему и программу вычисления функции на за- данном промежутке с шагом 0.2 и построить график этой функции. http://www.cyberforum.ru/cpp-beginners/thread1494087.html
Определить, в какой из половин матрицы (верхней или нижней) больше нулевых элементов C++
Для матрицы А(n строк, m столбцов, n-четное) определить, в какой из ее половин (верхней или нижней) больше нулевых элементов. Для подсчета количества нулевых элементов в заданной части матрицы...
C++ Определить индекс наибольшего из нечетных по значению положительных элементов
Составить схему алгоритма и программу решения задачи. В заданном целочисленном массиве R(9) определить индекс наибольшего из нечетных по значению положительных элементов. Добавлено через 22...
C++ Подсчитать количество цифр вводимого целого неотрицательного числа http://www.cyberforum.ru/cpp-beginners/thread1494081.html
составьте программу, подсчитывающую количество цифр вводимого вами целого неотрицательного числа . Можно использовать операцию целочисленного деления.
C++ Передача динамического массива в функцию извините мб глупый вопрос но не знаю как передать в функцию свой массив в 2 примере( в 1 примере все норм работает. void fillArray(int sz, float* tmpArray); void getArray(int sz, float*... подробнее

Показать сообщение отдельно
adiiiik
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 42

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

06.07.2015, 18:23. Просмотров 386. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru