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

вывод массива в сортировке - C++

Восстановить пароль Регистрация
 
almostclever
1 / 1 / 0
Регистрация: 04.03.2012
Сообщений: 101
12.05.2012, 13:02     вывод массива в сортировке #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
40
41
void sort2(int a[],int n)
{
    int countswap=0; //счетчик обменов
    int countcompare=0; //счетчик сравнений
    int i,k,j;
    for (i=0;i<n;++i)
    {
    int temp=a[i]; //текущая позиция
    printf("\nТекущая позиция: %d\n",temp);
    int left=0; //левый край
    int right=i; //правый край
    while (left<right) //пока левый край меньше правого
    {
    int middle=(left+right)/2; //находим середину
    printf("%d ",temp);
        if (temp>=a[middle])//если элемент больше середины
    { 
     
        left = middle + 1; //левый край правее середины
    }
    else
    right=middle; //иначе правый край равен середине
    printf("сравниваем с %d\n",a[middle]);
    countcompare++;
    }
        for (j=i;j>left;--j)
    {
        k=a[j-1];
        printf("%d обмениваем",a[j]);
        a[j-1]=a[j]; //обмен
        a[j]=k;
        printf(" с %d\n",a[j]);
        countswap++;
 
    }
    //system("pause");
    sleep(1000);
    } 
    printf("\n\nКоличество сравнений: %d\n",countcompare);
    printf("Количество обменов: %d\n",countswap);
}
когда делал с чар массивом, это было легко, а вот с инт массивом не могу разобраться. Прошу помоч.

поясню.вот та же функция только для чар массива, тут я делал вывод массива:
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
void sort(char a[],int n)
{
     
    int countswap=0; //счетчик обменов
    int countcompare=0; //счетчик сравнений
    int i,k,j;
    for (i=0;i<n;++i)
    {
    int temp=a[i]; //текущая позиция
    printf("\nТекущая позиция: %c\n",temp);
    int left=0; //левый край
    int right=i; //правый край
    while (left<right) //пока левый край меньше правого
    {
    int middle=(left+right)/2; //находим середину
    printf("%c ",temp);
    //printf("\nсередина: %d",middle);
    if (temp>=a[middle])//если элемент больше середины
    { 
     
        left = middle + 1; //левый край правее середины
    }
    else
    right=middle; //иначе правый край равен середине
        printf("сравниваем с %c\n",a[middle]);
    countcompare++;
    }
        for (j=i;j>left;--j)
    {
        k=a[j-1];
        printf("%c обмениваем",a[j]);
        a[j-1]=a[j]; //обмен
        a[j]=k;
        printf(" с %c\n",a[j]);
        countswap++;
 
        }
     system("pause");
     //sleep(1000);
      printf("\nМассив: %s",a);
        
    }
    printf("\n\nКоличество сравнений: %d\n",countcompare);
    printf("Количество обменов: %d\n",countswap);
}
Добавлено через 16 часов 18 минут
вот тут я вывожу:
C
1
printf("\nМассив: %s",a);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
12.05.2012, 13:35     вывод массива в сортировке #2
C++
1
2
3
4
for (i=0;i<n;++i)
{
    printf("\nМассив: %d",a[i]);
}
almostclever
1 / 1 / 0
Регистрация: 04.03.2012
Сообщений: 101
12.05.2012, 13:55  [ТС]     вывод массива в сортировке #3
когда так делаю сортировка не работает. проганяет 1 цикл и все

Добавлено через 15 минут
разобрался
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
12.05.2012, 14:43     вывод массива в сортировке #4
Разобрался, видел
У вас цикл то for (j=i;j>left;--j)
это же не for (j=0;j<n;j++)
Yandex
Объявления
12.05.2012, 14:43     вывод массива в сортировке
Ответ Создать тему
Опции темы

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