对一个50x50的二维整形数组进行Z型排序。。Z型排序到底是什么意思。。。
- 提问者网友:却不属于对方
- 2021-03-31 18:19
- 五星知识达人网友:舊物识亽
- 2021-03-31 18:57
例如:当N = 4时,z[4][4] = 0 1 5 6
2 4 7 12
3 8 11 13
9 10 14 15追问那这个要怎么排。。追答#define ROW_COL 50 //10 可以的,你可以试试,50在命令行了显示效果不是很好,你可以改为10试试
============================================
#include
#define ROW_COL 50 //10
int array[ROW_COL][ROW_COL];int zigag[ROW_COL][ROW_COL];
void init_array(void){
int *pbeg = &array[0][0];
int *endp = &array[ROW_COL-1][ROW_COL-1];
int i=0;
while(pbeg <= endp) {
*pbeg = i;
pbeg++;
i++;
}
}
void print_array(void){
int *pbeg = &array[0][0];
int *endp = &array[ROW_COL-1][ROW_COL-1];
int i=0;
printf("print_array:
"); while(pbeg <= endp) {
printf("%4d ",*pbeg);
pbeg++;
i++;
if(i%ROW_COL == 0) {
printf("
"); }
}
}
void print_zigag(void){
int *pbeg = &zigag[0][0];
int *endp = &zigag[ROW_COL-1][ROW_COL-1];
int i=0;
printf("print_zigag:
"); while(pbeg <= endp)
{
printf("%4d ",*pbeg);
pbeg++;
i++;
if(i%ROW_COL == 0) {
printf("
"); }
}
}
int zigag_sort(void){
int i;
int j;
int s;
int t;
int *p = &array[0][0];
for(i=0; i
s=i+j;
if(s
zigag[i][j]=p[t];
}
else
{
s=2*(ROW_COL-1)-i-j;
t=ROW_COL*ROW_COL-s*(s+1)/2-(ROW_COL-(((i+j)%2==0)?j:i));
zigag[i][j]=p[t];
}
}
}
return 0;
}
int main()
{
init_array();
print_array();
zigag_sort();
print_zigag();
}
- 1楼网友:夜风逐马
- 2021-03-31 19:46
a[5][5]=1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9