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