1

Тема: Сортування двовимірного динамічного масиву

Пробую сортувати динамічний двовимірний масив бульбашковим сортуванням і на початку з'являються нулі, хоча якщо оголошувати масив як звичайний то все працює. Ось код:

#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    srand (time(NULL));
    
    int i,j,n;
    
    cout<<"n = ";
    cin>>n;
 
    int **P = new int*[n];
    for(i=0;i<n;i++){
        P[i]=new int[n];
        }
        
        //int P[n][n];
        
        for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            P[i][j]=rand()%50;
            cout<<P[i][j]<<" ";
        }
        cout<<endl;
        }
        cout<<endl;
        
        for(int k=0;k<n;k++){
        for(int q=0;q<n;q++){
            for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                if(i+1==n && j+1==n){
                    continue;
                }
                else{
                    if(j+1==n && P[i][j]>P[i+1][0]){
                        swap(P[i][j],P[i+1][0]);
                    }
                    else{
                        if(P[i][j]>P[i][j+1]){
                            swap(P[i][j],P[i][j+1]);
                        }
                    }
                }
            }    
            }
        }    
        }
        
        for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            cout<<P[i][j]<<" ";
        }
        cout<<endl;
        }
        cout<<endl;
        


    getch();
    return 0;
}

2

Re: Сортування двовимірного динамічного масиву

Для двовимірних масивів треба уточнювати, як саме ви сортуєте: для одновимірних існує співвідношення "раніше-пізніше", для двовимірних - ні. Ви сортуєте весь масив, як один одновимірний? Спершу по рядках, потім - по стовпчиках? Чи лише сортуєте елементи в рядках? Чи стовпчиках? Чи сортуєте окремо елементи в рядках стовпчиках), а потім - самі рядки (стовпчики)? За якою ознакою?
Ну й у вас i та j від 0 до n-1, індекси P - теж від 0 до n-1, а потім ви щось робите із елементом P[ i][j+1], який лежить за межами масиву. Звідси нулі.

Подякували: kotandrey1