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

Сделать массив упорядоченым... - C++

Восстановить пароль Регистрация
 
pina4et
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 38
11.02.2010, 00:37     Сделать массив упорядоченым... #1
Дан массив размера N, все элементы которого, кроме первого, упорядочены по возростанию. Сделать массив упорядоченым, переместив первый элемент на новую позицию. Задача на С
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2010, 00:37     Сделать массив упорядоченым...
Посмотрите здесь:

из строки сделать массив C++
C++ Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив
C++ пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки.
Файлы и массив (сделать так, чтобы массив заполнялся значениями из этого же файла) C++
C++ как массив динамическим сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
11.02.2010, 01:19     Сделать массив упорядоченым... #2
походу те его просто отсортировать нада
вот методом пузырька:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
const N=10;
int a[N]={4,1,2,3,5,6,7,8,9},i,c,is;
do {
  is=0;
  for(i=1;i<N;i++)
   if(a[i-1]>a[i])
   {
    c=a[i];
    a[i]=a[i-1];
    a[i-1]=c;
    is=1;
   };
} while(is);
осталось только роспечатать, там типа 1 2 3 .... будет.
код не отлажен, могут быть синтаксические ошибки...
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
11.02.2010, 01:28     Сделать массив упорядоченым... #3
Дан массив размера 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
#include <stdio.h>
 
#define N 5
 
void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
 
int main()
{
    int index = 0;
    int array[N] = {5,2,4,7,8};
 
    while(array[index] > array[index+1] && index < N-1)
    {
        swap(&array[index], &array[index+1]);
        ++index;
    }
 
    for(index = 0; index < N; ++index)
        printf("%d ", array[index]);
 
    return 0;
}
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
11.02.2010, 01:29     Сделать массив упорядоченым... #4
массив УЖЕ ОТСОРТИРОВАН. просто если первый элемент не на месте, то нужно его сохранить, найти его место, сдвинуть все которые меньше его на один влево, потом первый вписать "освободившееся" место. без "пузырьков" на этот раз
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.02.2010, 07:34     Сделать массив упорядоченым... #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(){
    const int n=10;
    int mas[n]={4, 0, 1, 2, 3, 5, 6, 7, 8, 9}, i, i_st, temp;
    i_st=n-1;
    for(i=1; i_st==n-1 && i<n; i++ )
        if(mas[i]>mas[0])
            i_st=i-1;
    temp=mas[0];
    for(i=0; i<i_st; i++)
        mas[i]=mas[i+1];
    mas[i_st]=temp;
    for(i=0; i<n; i++)
        printf("%d ", mas[i]);
    printf("\n");  
  return 0;
}
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
11.02.2010, 11:04     Сделать массив упорядоченым... #6
Тогда тебе подойдет часть пузырькового рортичования. Какраз под описание задачи:[C]
C
1
2
3
4
5
6
7
8
9
10
11
12
13
const N=10;
int a[N]={4,1,2,3,5,6,7,8,9},i,c;
 
  for(i=1;i<N;i++)
   if(a[i-1]>a[i])
   {
    c=a[i];
    a[i]=a[i-1];
    a[i-1]=c;
    is=1;
   };
   else
     break;
Yandex
Объявления
11.02.2010, 11:04     Сделать массив упорядоченым...
Ответ Создать тему
Опции темы

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