sortowanie bąbelkowe
Ostatnio zmodyfikowano 2015-02-12 01:36
robertos18 Temat założony przez niniejszego użytkownika |
sortowanie bąbelkowe » 2015-02-11 22:04:41 #include <iostream> #include<ctime> #include<cstdlib> using namespace std; void losowanie_liczb( int tablica[], int ile ) { srand( time( NULL ) ); for( int i = 0; i < ile; i++ ) { tablica[ i ] = rand() % 10 + 1; } } void wypisz( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) cout << tablica[ i ]; } void sortowanie_babelkowe( int tablica[], int ile ) { for( int i = 1; i < ile; i++ ) { for( int j = ile - 1; j >= 1; j-- ) { if( tablica[ j ] < tablica[ j - 1 ] ) { int bufor; bufor = tablica[ j - 1 ]; tablica[ j - 1 ] = tablica[ j ]; tablica[ j ] = bufor; } } } } int main() { int dane[ 10 ]; losowanie_liczb( dane, 10 ); wypisz( dane, 10 ); sortowanie_babelkowe( dane, 10 ); return 0; } Mógłby ktoś mi w prostym języku napisać gdzie tu są błedy. |
|
NopeDotAvi |
» 2015-02-11 22:44:46 |
|
aksen |
» 2015-02-11 22:50:31 Algorytm sortowania działa poprawnie. Masz problem z wypisywaniem wyników. 1. funkcje wypisującą dane zmieniłbym tak: void wypisz( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) cout << "t[" << i << "]= " << tablica[ i ] << endl; cout << endl; }
2. po sortowaniu pasowałoby wypisać wyniki a więc dodałbym na koniec: wypisz( dane, 10 ); |
|
Piastlis |
» 2015-02-11 23:26:46 W sortowanie_babelkowe trzeba zamienić j-1 na j+1. |
|
aksen |
» 2015-02-11 23:33:17 W sortowanie_babelkowe trzeba zamienić j-1 na j+1. |
Zamierzasz wyjść poza zakres sortowanej tablicy? ;) |
|
Piastlis |
» 2015-02-11 23:39:15 Nie masz pojęcia o czym mówisz.Jak masz odwagę wrzuć na kompilator i przeproś.
|
|
robertos18 Temat założony przez niniejszego użytkownika |
» 2015-02-11 23:41:50 Tak wyglada ostatecznie kod: #include <iostream> #include<ctime> #include<cstdlib> using namespace std; void losowanie_liczb( int tablica[], int ile ) { srand( time( NULL ) ); for( int i = 0; i < ile; i++ ) { tablica[ i ] = rand() % 10 + 1; } } void wypisz( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) cout << "t[" << i << "]= " << tablica[ i ] << endl; cout << endl; } void sortowanie_babelkowe( int tablica[], int ile ) { for( int i = 1; i < ile; i++ ) { for( int j = ile - 1; j >= 1; j-- ) { if( tablica[ j ] < tablica[ j - 1 ] ) { int bufor; bufor = tablica[ j - 1 ]; tablica[ j - 1 ] = tablica[ j ]; tablica[ j ] = bufor; } } } } void wypisz2( int tablica[], int ile ) { for( int i = 0; i < ile; i++ ) cout << "t[" << i << "]= " << tablica[ i ] << endl; cout << endl; } int main() { int dane[ 10 ]; losowanie_liczb( dane, 10 ); wypisz( dane, 10 ); sortowanie_babelkowe( dane, 10 ); wypisz2( dane, 10 ); return 0; }
|
|
aksen |
do Piastlis » 2015-02-11 23:46:11 for( int j = ile - 1; j >= 1; j-- )
dla tablicy 10 elementowej ile = 10
zaczynamy pętlę od j = ile - 1 = 10 - 1 = 9
użycie tablica[ j + 1] to tyle co tablica[10] a więc wyjście poza zakres tablicy
sam przeproś :) |
|
« 1 » 2 3 |