Wątek przeniesiony 2017-03-31 15:17 z C/C++ przez kq.

sortowanie bąbelkowe c++

0

Na podstawie tego:

SORTOWANIE-BĄBELKOWE-1 (n, A)
n, i, j : integer
A : array [1..100] of …
for i  1 to n – 1 do
for j  n downto i + 1 do
if A[j] < A[j – 1] then
A[j] ↔ A[j – 1]

napisać program w c++. Napisałam, lecz liczby nie chcą się posortować, nie mogę znaleźć błędu.

#include <iostream>
using namespace std;
int main()
{
    int n, i, j, pom;
    int a[101];
    cout << "podaj n: ";
    cin >> n;
    for (i = 1; i <= n; i++) {
        cout << "podaj kolejne a: ";
        cin >> a[i];
    };
    for (j = n; j >= n - 1; j--) {
        for (i = 1; i <= j - 1; j++)
            if (a[i] > a[i + 1]) {
                pom = a[i];
                a[i] = a[i + 1];
                a[i + 1] = pom;
            }
    };

    cout << "liczby posortowane" << endl;
    for (i = 1; i <= n; i++)
        cout << a[i] << "  ";
}

PROSZĘ O POMOC I JAK NAJSZYBSZĄ ODPOWIEDŹ!!!

1
    for (j = n; j >= n - 1; j--) {
        for (i = 1; i <= j - 1; j++)

coś tu się pomieszało.

BTW: http://format.krzaq.cc Twój kod był absolutnie nieczytelny.

0

Przepraszam, pomyliłam się. Na postawie tego mam zrobić:
SORTOWANIE-BĄBELKOWE-2 (n, A)
n, i, j : integer
A : array [1..100] of …
for j  n downto 2 do
for i  1 to j – 1 do
if A[i] > A[i + 1] then
A[i] ↔ A[i + 1]

Z tego wynika, że najpierw jest iteracja po j potem po i. Czyli jest ok w zapisie. Nurtuje mnie jednak to downto. Czyli tablicę mam sortować z dołu do góry? Jak poprawnie zapisać ten moment?

0

Zauważ, że zmienna j nie jest nigdzie poza samą pętlą wykorzystywana, zatem nie ma żadnego znaczenia, w którą "stronę" działa ta pętla.

0

to jak powinien wygladać weedług was ten moment?
for (j = n; j >=2; j--) {
for (i = 1; i <= j - 1; i++)
na podstawie tego:
for j  n downto 2 do
for i  1 to j – 1 do????

1 użytkowników online, w tym zalogowanych: 0, gości: 1