Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248

Два счетчика для обмена и сравнений для сортировки массива

27.04.2014, 23:15. Показов 1523. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написал два счетчика для обмена и сравнений для сортировки массива.Проблема при выводе выводится сначала кучу чисел сортировки и обмена,а потом только числа массива.Как это исправить?
Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void bubbleSort(int* arr, int size)
{
    int countswap=0; //счетчик обменов
    int countcompare=0; //счетчик сравнений
 
int tmp, i, j;
for(i = 0; i < size - 1; ++i) // i - номер прохода
{            
for(j = 0; j < size - 1; ++j) // внутренний цикл прохода
{     
if (arr[j + 1] < arr[j]) 
countcompare++;
{
tmp = arr[j + 1]; 
arr[j + 1] = arr[j]; 
arr[j] = tmp;
countswap++;
}
  }
 }
printf("Количество сравнений: %d\n",countcompare);
printf("Количество обменов: %d\n",countswap);
}
Добавлено через 7 часов 4 минуты
пожалуйста помогите
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2014, 23:15
Ответы с готовыми решениями:

График зависимость количества перестановок и сравнений от размерности массива для алгоритмов сортировки
имеются массивы с размерностью от 1 до 20 с данными не отсортированными,частично отсортированными ,отсортированными в обратную сторону...

Счетчик сравнений для быстрой сортировки
Добрый вечер. Взял сортировку из википедии void qSort(int arr7, int first, int last) { k = first; l =...

Для челночной сортировки определить количество сравнений и обменов
Челночная сортировка. Размерность сортируемого массива: n = 10, n = 50, n = 250. Для указанного в задании алгоритма сортировки...

7
3 / 3 / 7
Регистрация: 08.04.2014
Сообщений: 20
27.04.2014, 23:41
Сначала выводится количество обменов, потому что это происходит в функции сортировки, а она вызывается перед выводом массива.
0
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248
28.04.2014, 12:54  [ТС]
пожалуйста срочно нужно

Добавлено через 3 часа 8 минут
Кэп.
Мне нужно,чтоб выводило два числа(кол-во обменов и сравнений),а не набор чисел....в этом проблем,вывожу после цикла,все равно кучу чисел выводит вместо двух.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.04.2014, 13:12
Gmails, ты сначала повтори, как работает конструкция if ! Хотя бы одну главу в книжке прочитай об этом!
Потому что с первого взгляда видно, что это чужой код, в который ты, не разобравшись, добавил свой счётчик!
Ну вот это что такое?!
C++
1
2
3
4
5
6
7
8
if (arr[j + 1] < arr[j]) 
countcompare++;
{
tmp = arr[j + 1]; 
arr[j + 1] = arr[j]; 
arr[j] = tmp;
countswap++;
}
какие инструкции должны выполняться при истинности условия, а какие при ложности? А какие предполагалось, что должны выполниться? Что должны делать фигурные скобки?
Сам себе ответь на этот вопрос.
1
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248
28.04.2014, 13:28  [ТС]
Не по теме.Инструкцию if знаю.Вы невнимательно прочли.Это пузырьковый метод сортировки.Код работает,проблема в выводе счетчиков(выводится числа из цикла,а нужно два числа).Если напишите как это исправить,то буду благодарен.И спасибо за ваш комментарий.
P.S:Я не писал,что это мой код)
int countswap=0; //счетчик обменов
int countcompare=0; //счетчик сравнений
if (arr[j + 1] < arr[j])
countcompare++;-считаем сравнения
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.04.2014, 14:18
Цитата Сообщение от Gmails Посмотреть сообщение
Инструкцию if знаю.Вы невнимательно прочли.
я пришёл к выводу, что не знаешь, исходя из этого.
Цитата Сообщение от Gmails Посмотреть сообщение
countcompare++;-считаем сравнения
если бы ты ззнал инструкцию if, ты б знал, что она выполняет только одну инструкцию после себя.
Например,
C++
1
2
3
4
5
6
if (arr[j + 1] < arr[j]) 
countcompare++; //только эта инструкция будет выполняться по условию
tmp = arr[j + 1]; 
arr[j + 1] = arr[j]; 
arr[j] = tmp;
countswap++;
добавление фигурных скобок решает проблему, но скобки должны идти сразу после условия if
А тебе наоборот надо, чтобы эта строчка вообще выполнялась при любом исходе условия, то есть
C++
1
2
3
4
5
6
7
8
countcompare++;
if (arr[j + 1] < arr[j]) 
{
tmp = arr[j + 1]; 
arr[j + 1] = arr[j]; 
arr[j] = tmp;
countswap++;
}
0
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248
28.04.2014, 18:42  [ТС]
Эт понятно.Вы снова не поняли,я писал,что проблема при выводе.как вывод сделать,чтоб выводили счетчики?
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
28.04.2014, 21:46
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
#include <iostream>
 
void printArray(int*, int); //прототип функции для вывода массива на печать
void bubbleSort(int*, int); //прототип
 
using namespace std;
 
int main()
{
const int size = 25;
int array[size] = {10,56,15,100,78,
45,91,12,1,4,
7,8,533,47,2,
21,3,67,68,79,
73,27,93,22,0};
 
cout << " No sorted a array" << "\n\n";
printArray(array, size);
bubbleSort (array, size);
cout << " The sorted a array" <<"\n\n";
printArray(array, size);
return 0;
}
void printArray(int *arr, int sizeOfArray) //печать массива
{
for (int k = 0; k < sizeOfArray; k++)
 
cout << arr[k]<<" ";
 
cout <<"\n\n";
}
void bubbleSort(int* arr, int sizeOfArray)
{
    int countswap=0; //счетчик обменов
    int countcompare=0; //счетчик сравнений
for(int i = 1; i < sizeOfArray; i++) // i - номер прохода
for(int j = 0; j < sizeOfArray - 1;j++) // внутренний цикл прохода
{
countcompare++;
if (arr[j ] < arr[j +1])
{
 int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
countswap++;
}
}
cout<<"countcompare:  "<<countcompare <<"\n";
cout<<"countswap:  "<<countswap <<"\n";
cout <<"\n\n";
}
Вам это нужно?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2014, 21:46
Помогаю со студенческими работами здесь

Найти количество сравнений после сортировки массива
Нужно чтобы писала количество сравнений после сортировки массива, но я вроде все прописал #include &quot;stdafx.h&quot; ...

Подсчет количества сравнений в методе быстрой сортировки массива
Есть скрипт выполняющий сортировку массива методом быстрой сортировки. Не могу разобраться, как реализовать подсчет и вывод количества...

Переделать код для сортировки массива на код для сортировки двумерной матрицы
возникла проблема, не могу переделать код для сортировки массива на код для сортировки двумерной матрицы. вот исходный код void...

Соединить два ноута для обмена файлами
У меня два ноутбука aser мне их надо соединить исключительно для передачи данных через wifi перепробовал всё не получается. ос windows 7 на...

Составить программу сортировки элементов массива на основе метода: Счетчика
Составить программу сортировки элементов массива на основе метода: Счетчика. Заранее огромнейшее спасибо)


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru