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

Сортование массивов в С++. - C++

Восстановить пароль Регистрация
 
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 21:07     Сортование массивов в С++. #1
Дано два массива одномерных. Объеденить в один, и отсортировать по спаданию. Как отсортировать я примерно понимаю. А как объеденить не понимаю вообще. Просьба помочь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2012, 21:07     Сортование массивов в С++.
Посмотрите здесь:

Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные C++
C++ Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов.
C++ Выделение массивов в ДП
C++ Сравнение массивов: найти максимальное перебором массивов
Элементы массивов a и b отсортировать в порядке возрастания. Образовать из этих массивов "c" из M+N элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
05.05.2012, 23:18     Сортование массивов в С++. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <algorithm> 
#include <iterator>
 
int main()
{
   int arr1[] = {3, 4, 1, 8, 0};
   int arr2[] = {2, 5, 6, 1};
   int carr[(sizeof(arr1)+sizeof(arr2))/sizeof(arr1[0])];
   std::sort(arr1, arr1+sizeof(arr1)/sizeof(arr1[0]), [](int a, int b) {return a > b;});
   std::sort(arr2, arr2+sizeof(arr2)/sizeof(arr2[0]), [](int a, int b) {return a > b;});
   std::merge(arr1, arr1+sizeof(arr1)/sizeof(arr1[0]), arr2, arr2+sizeof(arr2)/sizeof(arr2[0]), carr, [](int a, int b) {return a > b;});
   std::copy(carr, carr+sizeof(carr)/sizeof(carr[0]), std::ostream_iterator<int>(std::cout, " "));
}
http://liveworkspace.org/code/473289...3e4a4709119505
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 23:24  [ТС]     Сортование массивов в С++. #3
непонятно вообще) попроще бы написать)
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,588
Записей в блоге: 17
06.05.2012, 00:20     Сортование массивов в С++. #4
Это привели с помощью готовых алгоритмов STL при чем по новому стандарту.

Объединить можно создав новый массив длиной такой чтоб в него поместились оба объединяемых массива и тупо скопировать их туда.
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
13.05.2012, 23:15  [ТС]     Сортование массивов в С++. #5
Цитата Сообщение от Avazart Посмотреть сообщение
Это привели с помощью готовых алгоритмов STL при чем по новому стандарту.

Объединить можно создав новый массив длиной такой чтоб в него поместились оба объединяемых массива и тупо скопировать их туда.
вот так то и надо сделать, есть масив с 10 элементов наприме i[10], заполнить его любыми числами, есть масив j[10] заполнить тоже любыми, потом с этих масивов скопировать элементы в массив k[20]. Тоесть объеденить, потом отсортировать по спаданию. Просьба помочь, и использовать как можно проще реализацию.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,588
Записей в блоге: 17
13.05.2012, 23:24     Сортование массивов в С++. #6
С помощью STL- проще не куда, так как все готовое...
А так придется самому писать сортировку...
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
13.05.2012, 23:25  [ТС]     Сортование массивов в С++. #7
из 2 в 1 вроде код такой, но ошибок тут море)

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
#include <iostream>\
#include <conio.h>
using namespace std;
 
int main()
{
    int i[10];
    int j[10];
    int k[20];
    int b;
    int a;
    int c;
    for(a=0;a<10; a++) i[a]=rand();
    for(b=0;b<10; b++) j[b]=rand();
    
    i[0]==k[0];
    i[1]==k[1];
    i[2]==k[2];
    i[3]==k[3]; 
    i[4]==k[4];
    i[5]==k[5];
    i[6]==k[6];
    i[7]==k[7]; 
    i[8]==k[8];
    i[9]==k[9];
    j[0]==k[10];
    j[1]==k[11];
    j[2]==k[12];
    j[3]==k[13];
    j[4]==k[14];
    j[5]==k[15];
    j[6]==k[16];
    j[7]==k[17];
    j[8]==k[18];
    j[9]==k[19];   
    for(c=0; c<20;++c) cout<<k[20]<<' ';        
    
    system("pause");
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
14.05.2012, 00:31     Сортование массивов в С++. #8
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstring>
#include <ctime>
 
void insertSort( int *array, const std::size_t size ) {
   std::size_t min = 0;
   int tmp = 0;
   
   for ( std::size_t i = 0; i < size; i++ )
      if ( array[ i ] < array[ min ])
         min = i;
   
   tmp = array[ 0 ];
   array[ 0 ] = array[ min ];
   array[ min ] = tmp;
   
   for ( std::size_t i = 1, moveItem; i < size; i++ ) {
      tmp = array[ i ];
      
      for ( moveItem = i; array[ moveItem - 1 ] > tmp; moveItem-- )
         array[ moveItem ] = array[ moveItem - 1 ];
      
      array[ moveItem ] = tmp;
   }
}
 
int main() {
   int *array1,
       *array2,
       *array3;
   
   std::size_t size1 = 0,
               size2 = 0,
               size3 = 0;
   
   std::cout << "Enter size of first array: ";
   std::cin >> size1;
   
   std::cout << "Enter size of second array: ";
   std::cin >> size2;
   
   size3 = size1 + size2;
           
   array1 = new int [ size1 ];
   array2 = new int [ size2 ];
   array3 = new int [ size3 ];
   
   std::cout << "\n\nFirst randomized array: " << std::endl;
   for ( std::size_t i = 0; i < size1; i++ ) {
      array1[ i ] = std::rand() % 100;
      
      std::cout << std::setw( 2 ) << array1[ i ] << ' ';
   }
   
   std::cout << "\n\nSecond randomized array: " << std::endl;
   for ( std::size_t i = 0; i < size2; i++ ) {
      array2[ i ] = std::rand() % 100;
      
      std::cout << std::setw( 2 ) << array2[ i ] << ' ';
   }
   
   std::cout << "\n\nMerged arrays: " << std::endl;
   for ( std::size_t i = 0; i < size3; i++ ) {
      array3[ i ] = ( i < size1 ? array1[ i ] : array2[ i - size1 ]);
      
      std::cout << std::setw( 2 ) << array3[ i ] << ' ';
   }
   
   insertSort( array3, size3 );
   
   std::cout << "\n\nSorted merged arrays: " << std::endl;
   for ( std::size_t i = 0; i < size3; i++ )
      std::cout << std::setw( 2 ) << array3[ i ] << ' ';
 
   std::cout << std::endl;
   
   delete [] array1;
   delete [] array2;
   delete [] array3;
   
   return 0;
}
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
14.05.2012, 00:51  [ТС]     Сортование массивов в С++. #9
круто..а только вот не по возрастанию, а по спаданию) а так то огромное спасибо) и если можно то переделать немного, что бы все стало ясно.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
14.05.2012, 01:05     Сортование массивов в С++. #10
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstring>
#include <ctime>
 
void insertSort( int *const array, const std::size_t size ) {
   std::size_t max = 0;
   int tmp = 0;
   
   for ( std::size_t i = 0; i < size; i++ )
      if ( array[ i ] > array[ max ])
         max = i;
   
   tmp = array[ 0 ];
   array[ 0 ] = array[ max ];
   array[ max ] = tmp;
   
   for ( std::size_t i = 1, moveItem; i < size; i++ ) {
      tmp = array[ i ];
      
      for ( moveItem = i; array[ moveItem - 1 ] < tmp; moveItem-- )
         array[ moveItem ] = array[ moveItem - 1 ];
      
      array[ moveItem ] = tmp;
   }
}
 
int main() {
   int *array1,
       *array2,
       *array3;
   
   std::size_t size1 = 0,
               size2 = 0,
               size3 = 0;
   
   std::srand( std::time( 0 ));
 
   std::cout << "Enter size of first array: ";
   std::cin >> size1;
   
   std::cout << "Enter size of second array: ";
   std::cin >> size2;
   
   size3 = size1 + size2;
           
   array1 = new int [ size1 ];
   array2 = new int [ size2 ];
   array3 = new int [ size3 ];
   
   std::cout << "\n\nFirst randomized array: " << std::endl;
   for ( std::size_t i = 0; i < size1; i++ ) {
      array1[ i ] = std::rand() % 100;
      
      std::cout << std::setw( 2 ) << array1[ i ] << ' ';
   }
   
   std::cout << "\n\nSecond randomized array: " << std::endl;
   for ( std::size_t i = 0; i < size2; i++ ) {
      array2[ i ] = std::rand() % 100;
      
      std::cout << std::setw( 2 ) << array2[ i ] << ' ';
   }
   
   std::cout << "\n\nMerged arrays: " << std::endl;
   for ( std::size_t i = 0; i < size3; i++ ) {
      array3[ i ] = ( i < size1 ? array1[ i ] : array2[ i - size1 ]);
      
      std::cout << std::setw( 2 ) << array3[ i ] << ' ';
   }
   
   insertSort( array3, size3 );
   
   std::cout << "\n\nSorted merged arrays: " << std::endl;
   for ( std::size_t i = 0; i < size3; i++ )
      std::cout << std::setw( 2 ) << array3[ i ] << ' ';
 
   std::cout << std::endl;
   
   delete [] array1;
   delete [] array2;
   delete [] array3;
   
   return 0;
}
Что именно не понятно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2012, 01:10     Сортование массивов в С++.
Еще ссылки по теме:

C++ Создать два массива, которые будут содержать: все четные элементы двух массивов; все нечетные элементы двух массивов
В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов C++
В каждом из заданных массивов найти наибольшее значение, и разделить на него все элементы массивов C++

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

Или воспользуйтесь поиском по форуму:
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
14.05.2012, 01:10  [ТС]     Сортование массивов в С++. #11
большое спасибо. все теперь понятно.
Yandex
Объявления
14.05.2012, 01:10     Сортование массивов в С++.
Ответ Создать тему
Опции темы

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