Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 30.11.2016
Сообщений: 36
1

Упорядочить массивы по по убыванию, потом соединить массивы в один упорядоченный массив

01.12.2016, 00:16. Показов 681. Ответов 2
Метки нет (Все метки)

Начала писать, запуталась
Даны два одномерных массива состоящие из 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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define F 5
#define S 5
 
 
int arr[F];
int arr2[S];
int c;
int k;
int j;
int p;
int i=0;
 
int main()
{
setlocale (LC_ALL,"russian");
puts ("Введите элементы массива: F ");
for(i=0; i<F; i++)
scanf ("%d", &arr[i]);
if (*(arr+i)==0)
 
puts ("Введите элементы массива: S ");
for(i=0; i<S; i++)
scanf ("%d", &arr2[i]);
 
for ( i = 0; i < F-1; i ++ )
for ( j = F-2; j >= i; j -- )
if ( arr[j] < arr[j+1] )
{
c = arr[j]; arr[j] = arr[j+1];
arr[j+1] = c;
}
printf("\n Отсортированный массив F:\n");
for ( i = 0; i < F; i ++ )
printf("%d ", arr[i]);
 
for ( i = 0; i < S-1; i ++ )
for ( j = S-2; j >= i; j -- )
if ( arr2[j] < arr2[j+1] )
{
k = arr2[j]; arr2[j] = arr2[j+1];
arr2[j+1] = k;
}
printf("\n Отсортированный массив S:\n");
for ( i = 0; i < S; i ++ )
printf("%d ", arr2[i]);
 
 
 
 
return 0;
}
Добавлено через 4 минуты
Хотя даже тут, если есть отрицательные числа , то неправильно сортирует... Хелп ми...
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2016, 00:16
Ответы с готовыми решениями:

Упорядочить массив по фамилиям и напечатать входной и упорядоченный массивы
Ввести массив записей, содержащих сведения о фамилии и номера телефонов. Упорядочить массив по...

Соединить их в один упорядоченный массив F. Число сравнений не должно превышать m+n
Даны два упорядоченных набора чисел C1, C2, ..., Cn и D1, D2, ..., Dm. Соединить их в один...

Заданы два упорядоченных по убыванию массива. Соединить их в один массив, так чтобы элементы были упорядоченны по убыванию
Заданы два упорядоченных по убыванию массива А и В, состоящих из N и M вещественных элементов...

Массивы А, В и С упорядочить по убыванию, используя сортировку методом вставок
Ввести массивы А и В. В массив С скопировать те элементы массива А, которые встречаются в массиве В...

2
130 / 130 / 157
Регистрация: 11.04.2015
Сообщений: 343
01.12.2016, 11:31 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
#include <stdio.h>
#include <Windows.h>
#include <time.h>
 
#define HIGH_BORDER 10
#define LOW_BORDER  1
 
void bubble_sort(int iarr[], int num);
 
int main() {
    int a[10],b[10], i; 
    int c[20];
 
    for (i = 0; i < 10; i++) {
        a[i] = rand() % (HIGH_BORDER + 1 - LOW_BORDER) + LOW_BORDER;
        b[i] = rand() % (HIGH_BORDER + 1 - LOW_BORDER) + LOW_BORDER;
    }
 
    bubble_sort(a, 10);
    bubble_sort(b, 10);
 
    memcpy(c, a, sizeof(a));
    memcpy(&c[10], b, sizeof(b));
    qsort(a,10,sizeof(int));
    printf("\n\nComposed array not sorted: \n");
    for (i = 0; i < 20; i++) {
        printf("%d  ", c[i]);
    }
    printf("\n\n\n");
    bubble_sort(c, 20);
    printf("\n\nComposed array sorted: \n");
    for (i = 0; i < 20; i++) {
        printf("%d  ", c[i]);
    }
 
    return 0;
}
 
void bubble_sort(int iarr[], int num) {
    int i, j, k, temp;
    printf("\nUnsorted Data:");
    for (k = 0; k < num; k++) {
        printf("%3d", iarr[k]);
    }
    for (i = 1; i < num; i++) {
        for (j = 0; j < num - 1; j++) {
            if (iarr[j] < iarr[j + 1]) {
                temp = iarr[j];
                iarr[j] = iarr[j + 1];
                iarr[j + 1] = temp;
            }
        }
    }
}
0
Модератор
Эксперт Python
28785 / 15612 / 3100
Регистрация: 12.02.2012
Сообщений: 25,612
Записей в блоге: 4
01.12.2016, 13:53 3
Повторно сортировать объединенный массив очень нерационально. Особенно при больших размерах. Сортированные массивы нужно сливать (за время O(n)) :

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
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
 
// Слияние отсортированых массивов
 
int *Merge(int *A, int na, int *B, int nb)
{
    int *R;
    int ia,ib,ir,j;
    R=(int *) calloc((na+nb),sizeof(int));
    ia=ib=ir=0;
    while (1)
    {
      if (ia>=na)
      {
         for (j=ib; j<nb; j++) R[ir++]=B[j];
         break;
      }
      if (ib>=nb)
      {
         for (j=ia; j<na; j++) R[ir++]=A[j];
         break;
      }       
      if (A[ia] <= B[ib]) R[ir++]=A[ia++];
      if (A[ia] >  B[ib]) R[ir++]=B[ib++];
    }  
    return R;
}    
int main(int argc, char *argv[])
{
  int i; 
  int X[10]={-1,0,1,4,8,11,17,18,19,22};
  int Y[10]={1,2,3,4,5,6,7,8,9,10};
  int *R=Merge(X,10,Y,10);
  
  for (i=0; i<20; i++) printf("%d ",R[i]);
  printf("\n");
  
  free(R);
  
  system("PAUSE");  
  return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2016, 13:53

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Двумерные массивы. Упорядочить по убыванию элементы каждого столбца
Помогите решить задачи,срочно срочно срочно 2.Задана матрица Н(N,M) упорядочить по убыванию...

Ввести и упорядочить по убыванию четыре массивы, которые содержат N целых чисел
Ввести и упорядочить по убыванию четыре массивы, которые содержат соответственно 5,4,6,7 целых...

Массивы. Упорядочить элементы заданного массива целых чисел по убыванию количества единиц...
Задание 1 Упорядочить элементы заданного массива целых чисел по убыванию количества единиц,...

Массивы. Количество элементов в диапазоне, сумму после максимального, упорядочить по убыванию модулей
Здравствуйте, уважаемые программисты. Нужно срочно сдавать лабораторные. Очень благодарен за любую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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