您的位置:

c语言二维数组大小排序,C语言数组大小排序

本文目录一览:

C语言 对二维数组a【5】【10】进行从大到小排序 我是新手,代码越简单越好

#include stdio.h

int main()

{

int i,j,t,k=0,a[5][10],b[50];

for(i=0;i5;i++)

for(j=0;j10;j++)

{

scanf("%d",a[i][j]);

b[k]=a[i][j];k++;

}

for(i=0;i49;i++)

for(j=i+1;j50;j++)

if(b[i]b[j])

{t=b[i];b[i]=b[j];b[j]=t;}

k=0;

for(i=0;i5;i++)

{

for(j=0;j10;j++)

{

a[i][j]=b[k];

k++;

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

}

printf("\n");

}

return 0;

}

如何用C语言的qsort对二维数组排序?

建议你这样试试看:

先定义数组大小:

然后定义一个数组比较函数:

注意事项:

更安全的调用方式为qsort_s;

然后调用 qsort函数进行排序,具体逻辑如下:

代码合并如下:

这里只是根据你的数据生成了二维数组,可以根据你的具体情况进行调整;另外,关于qsort函数的用法,参考:qsort

关于比较函数的返回值,这里有一个表:

最后,以上代码的运行结果如下:

C语言 如何对二维数组进行按列排序?

无论是多少维的数组,机内都是一维的,以行优先存放。所以直接降为一维数组排序最方便省事。下面以二维数组为例写出代码——

#include "stdio.h"

int main(int argc,char *argv[]){

int x[3][3]={{9,4,3},{6,2,7},{5,8,1}},i,j,k,*p;

printf("Before ordering is as follows:\n");

for(i=0;i3;i++){

for(j=0;j3;printf("%2d",x[i][j++]));

printf("\n");

}

for(p=(int *)x,i=0;i9;i++){//用p=(int *)x将x降为一维数组p,选择法排序

for(k=i,j=k+1;j9;j++)

if(p[k]p[j])

k=j;

if(k!=i)

j=p[k],p[k]=p[i],p[i]=j;

}

printf("Sorted as follows:\n");

for(i=0;i3;i++){//输出排序后的二维数组

for(j=0;j3;printf("%2d",x[i][j++]));

printf("\n");

}

return 0;

}

运行结果:

C语言程序题,根据二维数组第二个数的大小排序从小到大。

#include stdio.h

void sort(int a[][2],int n) {

int i,j,k,t;

for(i = 0; i  n - 1; ++i) {

k = i;

for(j = i + 1; j  n; ++j) {

if(a[k][1]  a[j][1])

k = j;

}

if(k != i) {

for(j = 0; j  2; ++j) {

t = a[k][j];

a[k][j] = a[i][j];

a[i][j] = t;

}

}

}

}

int main() {

int a[12][2] = {1,3,3,4,0,7,3,8,15,19,15,20,10,15,8,18,6,12,5,10,4,14,2,9};

int i,j;

printf("排序前:\n");

for(i = 0; i  12; ++i) {

for(j = 0; j  2; ++j)

printf("%4d",a[i][j]);

printf("\n");

}

sort(a,12);

printf("排序后:\n");

for(i = 0; i  12; ++i) {

for(j = 0; j  2; ++j)

printf("%4d",a[i][j]);

printf("\n");

}

return 0;

}

C语言:有二维数组a[N][M],用冒泡排序法对二维数组中的每一行数据进行由小到大的排序,然后输出

void px( int *a, int n ) //冒泡排序函数

{

int i,j,t;

for( i=0;in-1;i++)

for( j=0;jn-1-i;j++)

if ( a[j] a[j+1] )

{

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

}

}

void main()

{

int a[N][M];

int i,j;

for( i=0;iN;i++ )

{

px( a[i], M );

for( j=0;jM;j++ )

{

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

}

printf("\n");

}

}

C语言!(二维数组统一排序)

#include stdio.h

void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/

//冒泡

{

int i,j,temp;

for(i=0;in-1;i++)

for(j=i+1;jn;j++) /*注意循环的上下限*/

if(a[i]a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

void selectsort(int *a,int n) //选择排序

{

int i,j,k,temp;

for(i=0;in-1;i++) {

k=i; /*给记号赋值*/

for(j=i+1;jn;j++)

if(a[k]a[j]) k=j; /*是k总是指向最小元素*/

if(i!=k) { /*当k!=i是才交换,否则a[i]即为最小*/

temp=a[i];

a[i]=a[k];

a[k]=temp;

}

}

}

void quick(int *a,int i,int j) //快排

{

int m,n,temp;

int k;

m=i;

n=j;

k=a[(i+j)/2]; /*选取的参照*/

do {

while(a[m]kmj) m++; /* 从左到右找比k大的元素*/

while(a[n]kni) n--; /* 从右到左找比k小的元素*/

if(m=n) { /*若找到且满足条件,则交换*/

temp=a[m];

a[m]=a[n];

a[n]=temp;

m++;

n--;

}

}while(m=n);

if(mj) quick(a,m,j); /*运用递归*/

if(ni) quick(a,i,n);

}

void insert(int *a,int n) //插入

{

int i,j,temp;

for(i=1;in;i++) {

temp=a[i]; /*temp为要插入的元素*/

j=i-1;

while(j=0tempa[j]) { /*从a[i-1]开始找比a[i]小的数,同时把数组元素向后移*/

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

j--;

}

a[j+1]=temp; /*插入*/

}

}

int main()

{

int n,a[100],i,k;

printf("请输入有多少个数?\n");

scanf("%d",n);

printf("依次输入数组元素\n");

for (i=0;in;i++)

scanf("%d",a[i]);

printf("请输入1,2,3,4选择排序算法\n");

scanf("%d",k);

switch(k)

{

case 1:bubble(a,n);break;

case 2:selectsort(a,n);break;

case 3:quick(a,0,n-1);break;

default:insert(a,n);break;

}

printf("结果为\n");

for (i=0;in;i++)

printf("%d ",a[i]);

return 0;

}