Sortowanie malejące tablicy dwuwymiarowej kolumnami

0

Dzień dobry! Jednym z elementów mojego programu ma być sortowanie malejące tablicy 2D kolumnami. Oto fragment kodu, o który mi się rozchodzi. Program się kompiluje jednakże wartości zwracane po sortowaniu przynajmniej w jednym wierszu są nieprawidłowe, przede wszystkim przy wartościach ujemnych i zerze (elementami tablicy są liczby z przedziału <-20, 19>.

Sortowanie ma postać np:
przed:
5 4 6
-7 8 2
1 2 -1

po:
5 8 6
1 4 2
-7 2 -1

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

void wypelnienie(int tab[5][5]){
	srand(time(0));
	for (int i = 0; i < 5; i++)
		for (int j = 0; j < 5; j++)
		{
			tab[i][j] = -20 + rand() % (88 + 19);
		}
}

void wypisanie(int tab[5][5])
{
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			cout << tab[i][j] << "\t";
		}
		cout << endl;
	}
}

void sortowanie(int tab[5][5]){
	int i, j, k, temp;
	for (j = 0; j<5; j++)
	{
		for (k = 0; k<4; k++)
		{

			for (i = 0; i<5; i++)
			{
				if (tab[i][j]<tab[i + 1][j])
				{
					temp = tab[i][j];
					tab[i][j] = tab[i + 1][j];
					tab[i + 1][j] = temp;
				}
			}
		}
	}
}
int main(void){
	int tab[5][5];
	wypelnienie(tab);
	wypisanie(tab);
	cout << endl;
	sortowanie(tab);
	wypisanie(tab);
	system("Pause");
	return 0;
}
0

Do zamknięcia mam błąd :)
przy 3 pętli wychodziłem po za granice zamiast 5 powinna być 4

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