當前位置:編程學習大全網 - 源碼下載 - 如何對多維數組進行排序

如何對多維數組進行排序

在C語言中,二維數組是按行存儲的,方便對每行進行排序。您可以將每壹行視為壹維數組,並使用sorting函數直接對其進行排序。

但是,對每壹列進行排序不能直接作為壹維數組進行排序。然而,第j列a[0...M-1][j]仍然可以作為壹維數組進行邏輯排序。我們以冒泡排序為例進行排序。

對二維數組按列排序後,進壹步展示了如何調用快速排序函數按行排序。

程序源代碼:

#包含?& ltstdio.h & gt

#包含?& ltstdlib.h & gt

#定義?m?三

#定義?n?三

//輸出二維數組的函數

作廢?print(int?a[][N])

{

int?I,j;

for(I = 0;我& ltm;i++)

{

for(j = 0;j & ltn;j++)

{

printf("%d?",a[I][j]);

}

printf(" \ n ");

}?

}

//qsort的cmp函數

int?cmp(常量?void*a,?const?作廢?*b)

{

回歸?*(int *)a-*(int *)b;

}

int?main(int?argc,?char*?argv)

{

int?a[M][N]={3,2,1,9,8,7,6,5,4 };

Printf("按列排序前的二維數組為:\ n ");

打印(壹份);

printf(" \ n ");

int?j;

for(j = 0;j & ltn;J++)//對每壹列進行升序排序?

{

//對j列進行排序?

int?m,n;

int?t;

for(M = M-1;m & gt0;m -)

{

for(n = 0;n & ltm;n++)

{

if(a[n][j]& gt;a[n+1][j])

{

t = a[n][j];

a[n][j]= a[n+1][j];

a[n+1][j]= t;

}

}?

}?

}?

Printf("二維數組按列排序後變成:\ n ");

打印(壹份);

printf(" \ n ");?

//將按列排序的二維數組按行升序排序?(調用快速排序功能)?

int?我;

for(I = 0;我& ltm;i++)

{

qsort(a[i],N,sizeof(a[i][0]),CMP);

}?

Printf("先按列排序,再按行排序,二維數組變成:\ n ");

打印(壹份);

printf(" \ n ");

系統(“暫停”);

回歸?0;

}

編譯運行後的結果如下:

程序源代碼和編譯後的可執行程序已經打包在附件中,可以直接下載運行。

  • 上一篇:交行信用卡已解除管控啥意思
  • 下一篇:java的toString是壹個什麽方法,為什麽我在類中重寫他,當輸出該類對象的時候卻能顯示裏面的結果?
  • copyright 2024編程學習大全網