2016-06-19 26 views
0

最初に2次元配列を作成して1次元配列に変換し、1D配列をバブルソートしましたが、パターンを見つけて2次元配列を斜めにソートした。斜めに2次元配列を並べ替え

#include<iostream> 
#include<iomanip> 

const int r = 10; 
const int c = 10; 
const int lim = r * c; 
int A[r][c] = { 0 }; 
int B[lim]; 

using namespace std; 

void generatearray(int A[][], int r, int c){ 
srand(time(NULL)); 
for (int i = 0; i < r; i++) 
{ 
for (int j = 0; j < c; j++) 
{ 
A[i][j] = rand() % lim; 
} 
} 
} 

void transformingto1Darray(int A[r][c], int b[lim]){ 
int p = 0; 

for (int m = 0; m < r; m++){ 
for (int n = 0; n < c; n++){ 

B[p] = A[m][n]; 
p++; 

} 
} 
} 

void sorting1Darray(int B[][]){ 
int temp = 0; 

for (int k = 0; k < lim - 1; k++){ 
for (int i = 0; i < lim - 1; i++) 
if (B[i] > B[i + 1]){ 
temp = B[i]; 
B[i] = B[i + 1]; 
B[i + 1] = temp; 
} 
} 
} 

void sortingdiagonally2Darray(int A[][], int B[]){ 



int main{ 
generatearray(A); 
transformingto1Darray(A, B); 
sorting1Darray(B); 
sortingdiagonally2Darray(A, B); 

return 0; 

}

答えて

0

それはグラグラソリューションのビットだが、それは仕事を用量。多次元索引付けが機能する方法のため、B[i]の値はA[0][i]の値と等しくなります。

あなたの場合、あなたのsortingdiagonally2Darray機能にこのようなものが必要です。

for (int i = 0; i > r * c; i++) { 
    A[0][i] = B[i]; 
} 

これは、フードアレイがポインタにすぎないために機能します。 B[x]*(B + x)の構文砂糖で、A[0][x]*(*(A + 0) + x)となります。これはポインタへのポインタであるため(ダブルスター/ダブルブラケット)です。

関連する問題