Błąd w sortowaniu bąbelkowym.

0

Witam napisałem taki kod do sortowania bąbelkowego:

 void sortbomb(int size, int tablica[])
{

	for (int i = 0; i < size; ++i)
	{
		for (int j = 1; i < size - 1; ++j)
		{
			if (tablica[j - 1] > tablica[j])
			{
				int bufor;
				bufor = tablica[j - 1];
				tablica[j - 1] = tablica[j];
				tablica[j] = bufor;
			}
		}
	}

}

Ale nie pokazuje się żaden error w tym kodzie,i debuger mnie kieruje na ifa i nie wiem co z tym zrobić.

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void wypelnianie(int size, int tablica[]);
void wypis(int size, int tablica[]);
void sortbomb(int size, int tablica[]);
int main()
{
	srand(time(NULL));
	const int size = 10;
	int tab[size];

	wypelnianie(size, tab);
	wypis(size, tab);
	sortbomb(size, tab);
	cout << "po sortowaniu bąbelkowym " << endl;
	wypis(size, tab);

}


void wypelnianie(int size, int tablica[])
{
	for (int i = 0; i < size; ++i)
	{
		tablica[i] = rand() % 10;
	}
}

void wypis(int size, int tablica[])
{

	for (int i = 0; i < size; ++i)
	{
		cout << tablica[i] << endl;
		
	}
}

void sortbomb(int size, int tablica[])
{

	for (int i = 0; i < size; ++i)
	{
		for (int j = 1; i < size - 1; ++j)
		{
			if (tablica[j - 1] > tablica[j])
			{
				int bufor;
				bufor = tablica[j - 1];
				tablica[j - 1] = tablica[j];
				tablica[j] = bufor;
			}
		}
	}

} 

To cały kod.W output wyskakuje Exception thrown: read access violation.
tablica was 0x1420112,ale jest to chyba ogólnikowy błąd.

2

Wychodzi ci poza zakres tablicy przez literówkę, w drugiej pętli masz i zamiast j.

0

Dzieki! Teraz jeszcze jak poprawiłem kod:To działa prawe,bo ostatnia liczba nie jest sortowana.

#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
using namespace std;

void wypelnianie(int size, int tablica[]);
void wypis(int size, int tablica[]);
void sortbomb(int size, int tablica[]);
int main()
{
	srand(time(NULL));
	const int size = 10;
	int tab[size];

	wypelnianie(size, tab);
	wypis(size, tab);
	sortbomb(size,tab);
	cout << "po sortowaniu bombelkowym" << endl;
	wypis(size, tab);
	system("pause");
}


void wypelnianie(int size, int tablica[])
{
	for (int i = 0; i < size; ++i)
	{
		tablica[i] = rand() % 10;
	}
}

void wypis(int size, int tablica[])
{

	for (int i = 0; i < size; ++i)
	{
		cout << tablica[i] << endl;
		
	}
}

void sortbomb(int size, int tablica[])
{

	for (int i = 0; i < size; ++i)
	{
		for (int j = 0; j < size - 1; ++j)
		{
			if (tablica[j - 1] > tablica[j])
			{
				int bufor;
				bufor = tablica[j - 1];
				tablica[j - 1] = tablica[j];
				tablica[j] = bufor;
			}
		}
	}

} 
2

W jednym forze i<size, a w drugim j<size-1. Wywalić -1.

void sortbomb(int size, int tablica[])
{
 
    for (int i = 0; i < size; ++i)
    {
        for (int j = 0; j < size - 1; ++j) // <-- o tutaj
        {
            if (tablica[j - 1] > tablica[j])
            {
                int bufor;
                bufor = tablica[j - 1];
                tablica[j - 1] = tablica[j];
                tablica[j] = bufor;
            }
        }
    }
 
}

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