生活资讯
二维数组排序 、sort对二维数组排序
2023-04-05 01:23  浏览:24

vba二维数组多条件排序怎么设置

vba二维数组多条件排序设置的方法:

1、通过单元格赋值以后利用工作表里的Sort方法进行排序。

2、通过SQL实现,也需要调用单元格区域存放数据。

3、直接写循环语句通过算法来实现。

我知道怎么打二维数组但是我不知道二维数组怎么排序

给出一个二维数组。请将这个二维数组按第i列(i从1开始)排序,假设第i列同样,则对同样的行按第i+1列的元素排序。假设第i+1列的元素也同样,则继续比较第i+2列,以此类推,直到最后一列。假设第i列到最后一列都同样,则按原序排列。 

实现下面接口:

输入一个m*n 的整数数组。实现按规则排列,返回排列后的数组。

调用者会保证:

比方输入数组为: 

1,2,3

2,3,4

2,3,1

1,3,1

按第二列排序: 

输出: 

1,2,3

2,3,1

1,3,1

2,3,4

分析:从最后一列开始使用稳定的排序算法(必须是稳定,可采用冒泡排序)排序,一直排序到指定的列为止。

C#中二维数组怎么排序?

//冒泡法排序

#includestdio.h

void

main()

{

int

a[10];

//定义一个数组既它的元素为10

int

i,j,temp;

//定义3个变量

printf("输入10个整数:na");

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

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

//依次输入10个整数

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

//进行9轮排序

{

for(j=0;j9-i;j++)

//每轮进行9-i次交换

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

{

temp=a[j];

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

//大的沉底,小的上浮

a[j+1]=temp;

}

}

printf("排序结果:");

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

//依次输出排序结果

printf("%dt

",a[i]);

}

随便输入几个数,然后按从小到大或者是从大到小的顺序排列

输入五个数,按从小到大的顺序排列

//从小到大排列

#includestdio.h

void

main()

{

int

i,j,a[5],temp;

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

{

printf("please

input

a

number

a[%d]=",i);

scanf("%d",a);

}

for(i=4;i0;i--)

{

for(j=4;j4-i;j--)

{

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

{

temp=a[j-1];

a[j-1]=a[j];

a[j]=temp;

}

}

}

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

printf("%dt",a);

}

从大到下就是将语句"if(a[j-1]a[j])"改为"if(a[j-i]a[j])"即可

程序分析

冒泡法顾名思义就是将一个数从下面浮上来,假设有5个数,21

56

87

6

9,

将第五个元素的值与第四个元素的值相比,如果第五个元素的值小于第四个元素的值,则交换着两个元素的值。

接下来,将第四个元素的值与第三个元素的值进行比较,按照类似的方式,如果发现下面元素的值小于上面元素的值,则交换着两个值。

将第三个元素的值与第二个元素的值比较,做同样的工作。

在这一轮比较结束时,最小值将到达最上面,可以说最小值已经浮到最上面

第二轮,从***部的元素开始比较,直到第二个元素,因为***个已经是最小,不需要再进行比较。

其实,就是一个for循环,最外面的循环控制循环的次数,需要有n-1次循环

固定为for(i=n-1;i0;i--)

里面的循环从***值开始,次数为n-1-i,

固定为for(j=n-1;jn-1-i;j--)

循环体就是

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

{temp=a[j-1];

a[j-1]=a[j];

a[j]=temp;

}

直接套用即可

字符串的比较也是一样,这里不再罗嗦

例:将dcaeb

按字母顺序排列

#include

stdio.h

#include

string.h

#define

N

6

void

string_cmp(char

*p)

{

int

i,j;

char

o;

for(i=0;i

N-1;i++)

{

for(j=i+1;j

N-1;j++)

{

//if(*(p+i)

*(p+j))

if(strcmp((p+i),(p+j))

0)

{

o=*(p+i);

*(p+i)=*(p+j);

*(p+j)=o;

}

}

}

}

main()

{

int

i;

char

a[N]=

"dcaeb

";

string_cmp(a);

for(i=0;i

(N-1);i++)

printf(

"%c

",a);

printf(

"n

");

getch();

}

如何将二维数组排序

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace 二维排序

{

class Program

{

static void Main(string[] args)

{

int[,] arr= new int[,] { { 4, 78, 5 }, { 34, 7, 15 }, { 14, 8, 55 },{55,12, 9} };

int i,j,k,l,temp;

for (i=0;i4;i++)//一维数组内部排序。冒泡。

{

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

{

for (k = j; k 3; k++)

{

if (arr[i, j] arr[i, k])

{

temp = arr[i, j];

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

arr[i, k] = temp;

}

}

}

}

for (i = 0; i 3; i++)//将有序的一维数组作为元素的一维数组排序。也是冒泡。。

for (j = i; j 4; j++)

{

k=0;

while ((k 2) (arr[i, k] == arr[j, k])) k++;

if (arr[i, k] arr[j, k])

{

for (l = 0; l 3; l++)

{

temp = arr[i, l];

arr[i, l] = arr[j, l];

arr[j, l] = temp;

}

}

}

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

{

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

Console.Write("{0} ", arr[i, j]);

Console.WriteLine();

}

Console.ReadKey();

}

}

}

嘿嘿。。有啥看不懂的可以问我。。

关于二维数组排序和sort对二维数组排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发表评论
0评