kin.pac Temat założony przez niniejszego użytkownika |
sortowanie bąbelkowe c++ » 2017-03-31 01:07:24 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; }; for(j=n;j>=n-1;j--) { for (i=1;i<=j-1;j++) if (a>a[i+1]) { pom=a; a=a[i+1]; a[i+1]=pom; } }; cout<<"liczby posortowane"<<endl; for(i=1;i<=n;i++) cout<<a<<" "; } PROSZĘ O POMOC I JAK NAJSZYBSZĄ ODPOWIEDŹ!!! |
|
darko202 |
» 2017-03-31 08:08:02
int tab[ 101 ]; cout << "podaj n: "; cin >> n; for( i = 1; i <= n; i++ ) { cout << "podaj kolejne dane do sortowania: "; cin >> tab[ i ]; };
|
|
kin.pac Temat założony przez niniejszego użytkownika |
» 2017-03-31 10:28:00 Jeżeli chodzi o wprowadzenie danych do tablicy jest ok. Nie chcą się one jedynie posortować. Wydaje mi się, że błąd może tkwić w tym momencie: for (j = n; j >= n - 1; j--) { for (i = 1; i <= j - 1; j++) lecz nie wiem co tu zmienić, żeby było wszystko w porządku. |
|
mateczek |
» 2017-03-31 11:26:49 zasada numer 1 wklejaj kod w znaczniki [cpp]tutaj kod[/cpp] for( j = n; j >= n - 1; j-- ) { }
no i jescze to !!! for( i = 1; i <= n; i++ )
przykład sortowania (można jeszcze zmodernizować i przyspieszyć) #include <iostream>
using namespace std;
int main() { int tablica[ 5 ] { 1, 4, 3, 7, 2 }; for( int i = 0; i < 5; i++ ) { for( int j = 0; j < 5 - 1; j++ ) { int pom = tablica[ j ]; if( tablica[ j ] > tablica[ j + 1 ] ) { tablica[ j ] = tablica[ j + 1 ]; tablica[ j + 1 ] = pom; } } } for( int i = 0; i < 5; i++ ) { cout << tablica[ i ] << " "; } }
|
|
kin.pac Temat założony przez niniejszego użytkownika |
» 2017-03-31 11:50:37 Tylko mam napisać program na podstawie tego: 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 > A[i + 1] then A ↔ A[i + 1]
(Przepraszam, pomyliłam się) Więc chyba mam indekować tablicę od 1. Nurtuje mnie jeszcze ten moment z downto. To znaczy, że mam sortować tablicę z dołu do góry? Jak poprawnie zapisać ten moment? |
|
mateczek |
» 2017-03-31 14:11:15 pewnie są języki, w których się tablice indeksuje od jedynki. W c++ taka deklaracja tablicy jak poniżej (w sensie że deklarujesz tablicę od elementu niezerowego) nie jest możliwa. A : array [1..100] of int
Na stronie wikibooks https://pl.wikibooks.org/wiki/Kody_%C5%BAr%C3%B3d%C5%82owe/Sortowanie_b%C4%85belkowe jest wiele implementacji sortowania poniżej jedna z nich. #include <iostream>
using namespace std;
int main() { constexpr int size = 5; int tab[ size ] { 1, 4, 3, 7, 2 }; bool swapped; do { swapped = false; for( int i = 0; i < size - 1; ++i ) { if( tab[ i ] > tab[ i + 1 ] ) { swap( tab[ i ], tab[ i + 1 ] ); swapped = true; } } } while( swapped ); for( int i = 0; i < size; i++ ) { cout << tab[ i ] << " "; } }
na wzór to nie znaczy przeklepać bezmyślnie. A czy posortujesz elementy biegając od góry czy od dołu?? co to ma za znaczenie #include <iostream>
using namespace std;
int main() { constexpr int size = 5; int tab[ size ] { 1, 4, 3, 7, 2 }; bool swapped; do { swapped = false; for( int i = size - 1; i > 0; i-- ) { if( tab[ i ] < tab[ i - 1 ] ) { swap( tab[ i ], tab[ i - 1 ] ); swapped = true; } } } while( swapped ); for( int i = 0; i < size; i++ ) { cout << tab[ i ] << " "; } }
|
|
« 1 » |