第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下數(shù)組,請問該怎么排序?

如下數(shù)組,請問該怎么排序?

紫衣仙女 2022-11-19 19:19:54
例如數(shù)組 {{4,2},{1,7},{4,5},{1,2},{1,1},{4,1}}排序后為{{1,1},{1,2},{1,7},{4,1},{4,2},{4,5}}
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個贊

在C語言中,二維數(shù)組按行存儲,對每一行排序很方便,可以把每一行當(dāng)成一個一維數(shù)組,使用排序函數(shù)直接進(jìn)行排序。
然而對每一列進(jìn)行排序,就不能直接當(dāng)成一維數(shù)組進(jìn)行排序。但是仍然可以把第j列a[0...M-1][j]在邏輯上當(dāng)成一維數(shù)組進(jìn)行排序,下面以使用冒泡排序?yàn)槔龑ζ渑判颉?br/>對二維數(shù)組按列排序后,進(jìn)一步展示了如何調(diào)用快速排序函數(shù)按行進(jìn)行排序。
程序源碼:
#include <stdio.h>
#include <stdlib.h>

#define M 3
#define N 3

//輸出二維數(shù)組的函數(shù)
void print(int a[][N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");

}

//qsort的cmp函數(shù)
int cmp(const void*a, const void *b)
{
return *(int*)a-*(int*)b;
}

int main(int argc, char* argv)
{

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

printf("按列排序前的二維數(shù)組是:\n");
print(a);
printf("\n");
int j;
for(j=0;j<N;j++)//對每一列進(jìn)行升序排序 
{
//對第j列進(jìn)行排序 
int m,n;
int t;
for(m=M-1;m>0;m--)
{
for(n=0;n<m;n++)
{
if(a[n][j]>a[n+1][j])
{
t=a[n][j];
a[n][j]=a[n+1][j];
a[n+1][j]=t;
}



printf("按列排序后二維數(shù)組變?yōu)椋篭n");
print(a);
printf("\n"); 

//對按列排序后的二維數(shù)組按行升序排序 (調(diào)用快速排序函數(shù)) 

int i;
for(i=0;i<M;i++)
{
qsort(a[i],N,sizeof(a[i][0]),cmp);


printf("按列排序后再按行排序后二維數(shù)組變?yōu)椋篭n");
print(a);
printf("\n");
system("pause");
return 0;
}


查看完整回答
反對 回復(fù) 2022-11-22
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號