Здравствуйте!
Третий день мучаюсь с этой программой.
Очень хочу реализовать.
Но отсутствие опыта дает о себе знать.
Проверьте, пожалуйста код, и укажите на ошибки.
Также в самом коде закомментировал то, что совсем не понимаю. Жду ответов на эти вопросы.
Заранее премного благодарен.
Можно на почту.
#include "stdafx.h"
#include <algorithm>
#include <iostream>
using namespace std;
int main ()
{
int n, counter(0);
cin>>n;
int *arr = new int [n];
// как я понял, здесь нужно заполнить массив? как это сделать, и что должно получиться?
for (int j=0; j<n-1;>>a;
}
for (int i=0; i=n-j-1; i++) { // правильно ли здесь задано i=n-j-1? или нужно написать i<n?>>a[i+1]) {
swap(arr, arr[i+1]);
counter++;
}
}
}
cout << counter;
// как здесь можно вывести отсортированный массив?
delete [] arr;
return 0;
}
for (int j=0; j<n-1;>>a;
}
То, что хочу получить от программы:
Дана последовательность чисел а1, а2,...аn. Требуется переставить числа в порядке возрастания. Для этого сравниваются два соседних числа ai и ai+1. Если аi > ai+1, то делается перестановка. Так продолжается до тех пор, пока все элементы не станут расположены в порядке возрастания. Составить алгоритм сортировки, подсчитывая при этом количества перестановок.
Другие языки программирования и технологии
Сортировка обменами. Массивы (корректировать код с++)
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, counter = 0;
cout << "n? ";
cin >> n;
int *arr = new int[n];
cout << "array:\n";
// элементам массива присвоим случайные числа
srand(time(0));
for (int c = 0; c < n; ++c) {
arr[c] = rand() % 100;
cout << arr[c] << ' ';
// или введенные с клавиатуры
// int v;
// cin >> v;
// a[c] = v;
}
// сама сортировка
for (int k = 0; k < n - 1; ++k) {
for (int c = 0; c < n - k; ++c) {
if (arr[c] > arr[c + 1]) {
swap(arr[c], arr[c + 1]);
++counter;
}
}
}
// как здесь можно вывести отсортированный массив?
cout << "\n\nresult array:\n";
for (int c = 0; c < n; ++c) cout << arr[c] << ' ';
cout << "\n\nswap count: " << counter << '\n';
delete [] arr;
}
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, counter = 0;
cout << "n? ";
cin >> n;
int *arr = new int[n];
cout << "array:\n";
// элементам массива присвоим случайные числа
srand(time(0));
for (int c = 0; c < n; ++c) {
arr[c] = rand() % 100;
cout << arr[c] << ' ';
// или введенные с клавиатуры
// int v;
// cin >> v;
// a[c] = v;
}
// сама сортировка
for (int k = 0; k < n - 1; ++k) {
for (int c = 0; c < n - k; ++c) {
if (arr[c] > arr[c + 1]) {
swap(arr[c], arr[c + 1]);
++counter;
}
}
}
// как здесь можно вывести отсортированный массив?
cout << "\n\nresult array:\n";
for (int c = 0; c < n; ++c) cout << arr[c] << ' ';
cout << "\n\nswap count: " << counter << '\n';
delete [] arr;
}
Похожие вопросы
- как при сортировке одномерного массива оставить на месте неположительные элементы
- Сортировка одномерного массива + вставка числа в отсортированный массив PASCAL
- Сортировка одномерного массива
- Помогите с одномерным массивом. Напишите код на Паскале.
- Сортировка не массива в С++
- решение задачи на С++ visualy sdudio 2008. на использование сортировки в массивах.
- помощь по си! сортировка одномерного массива!
- Сортировка двумерного массива. Пусть нам надо сортировать первый столбец по убыванию. C++
- Помощь в С++ (одномерный массивы) опишите код
- Можно-ли использовать сортировку слиянием на массиве, состоящем из 10-ти элементов.