关于二维数组降序排列问题请教各位!!! 本帖最后由 dangqinghua 于 2010-06-18 17:16:06 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 X1给的是错的,你看看,第一列中有三个“2”,而X2的第一列中只有两个“2”,我自已改了,你看看代码吧。static void Main(string[] args) { int[,] x1 = new int[,] { { 0, 0 }, { 0, 1 }, { 2, 0 }, { 2, 1 }, { 1, 0 }, { 1, 1 }, { 3, 0 }, { 3, 1 } }; string[,] x2 = new string[,] { { "3", "0" }, { "3", "1" }, { "2", "0" }, { "2", "1" }, { "1", "0" }, { "1", "1" }, { "0", "0" }, { "0", "1" } }; int tempX = 0; for (int w = 0; w < x1.GetLength(0) - 1; w++) { for (int i = x1.GetLength(0) - 1; i > w; i--) { if (x1[i, 0] > x1[i - 1, 0]) { for (int j = 0; j < x1.GetLength(1); j++) { tempX = x1[i, j]; x1[i, j] = x1[i - 1, j]; x1[i - 1, j] = tempX; } } else if (x1[i, 0] == x1[i - 1, 0]) { if (x1[i, 1] < x1[i - 1, 1]) { for (int j = 0; j < x1.GetLength(1); j++) { tempX = x1[i, j]; x1[i, j] = x1[i - 1, j]; x1[i - 1, j] = tempX; } } } } } foreach (int iVal in x1) { Console.Write("{0},", iVal); } Console.WriteLine(); foreach (string sVal in x2) { Console.Write("{0},", sVal); } Console.ReadKey(); } 看到上面朋友写的代码我都快无语了,这个题有这么麻烦嘛;下面是我打的,朋友们看一下,有什么有对还请指点一二。 int[,] x1 = new int[,] { { 0, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 }, { 2, 0 }, { 2, 1 }, { 3, 0 }, { 3, 1 } }; int temp; for (int i = x1.GetLength(0) - 1; i >= 0; i-=2) { temp = x1[i, 1]; x1[i, 1] = x1[i - 1, 1]; x1[i - 1, 1] = temp; } for (int i = x1 .GetLength (0)-1; i >=0; i--) { for (int j = 0; j < x1.GetLength(1); j++) { Console.Write("{0}", x1[i, j]); } Console.WriteLine(); } /******************************************************************** 文件名: test_Default.cs** 创建人: ** 创建日期: 2010-06-21** 修改人: ** 最后修改日期:** 描 述: 将多维数组升/降序排列** 版 本:1.0**---------------------------------------------------------------** Copyright (c) 2010-2011 ******************************************************************/using System;using System.Web;public partial class test_Default : System.Web.UI.Page{ private string temp0 = null; private string temp1 = null; private string[,] x1 = new string[,] { {"0", "0" }, { "0", "1" }, { "1", "0" }, { "1", "1" }, { "26", "0" }, { "26", "1" }, { "122", "0" }, { "122", "1" }, { "2", "0" }, { "2", "1" }, { "3", "0" }, { "3", "1" } }; private string[,] x2 = new string[,] { {"1", "0" }, { "1", "1" }, { "2", "0" }, { "2", "1" }, { "5", "0" }, { "5", "1" }, { "6", "0" }, { "6", "1" } }; private string[,] x3 = new string[,] { { "0", "0" }, { "0", "1" }, { "1", "0" }, { "1", "1" }, { "2", "0" }, { "2", "1" }, { "3", "0" }, { "3", "1" } }; private string[,] x4 = new string[,] { { "3", "0" }, { "3", "1" }, { "2", "0" }, { "2", "1" }, { "1", "0" }, { "1", "1" }, { "0", "0" }, { "0", "1" } }; protected void Page_Load(object sender, EventArgs e) { ListSorting(x1); Response.Write(WriteStr(x1)); } /// <summary> /// 将二维数组升/降序排列(按上标最大值排列) /// </summary> /// <param name="x1">参数</param> ///<param name="Type">排序类型1为升序,0为降序</param> /// <returns></returns> private string[,] Change(string[,] val, int Type) { for (int i = 0; i < (val.Length / 2); i++) { for (int j = i + 1; j < (val.Length / 2); j++) { if (Type == 1) { if (Convert.ToInt32(val[i, 0]) <= Convert.ToInt32(val[j, 0])) { temp0 = val[i, 0]; //0,0 temp1 = val[i, 1]; //0,1 val[i, 0] = val[j, 0]; //0,0=1,0 val[i, 1] = val[j, 1]; //0,1=1,1 val[j, 0] = temp0; //1,0=0,0 val[j, 1] = temp1; //1,1=0,1 if (val[i, 0] == val[j, 0]) //0,0=1,0 { if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1])) //0,1>1,1 { temp0 = val[i, 1]; //0,1 val[i, 1] = val[j, 1]; //0,1=1,1 val[j, 1] = temp0; //1,1 } } } } if (Type == 0) { if (Convert.ToInt32(val[i, 0]) >= Convert.ToInt32(val[j, 0])) { temp0 = val[i, 0]; //0,0 temp1 = val[i, 1]; //0,1 val[i, 0] = val[j, 0]; //0,0=1,0 val[i, 1] = val[j, 1]; //0,1=1,1 val[j, 0] = temp0; //1,0=0,0 val[j, 1] = temp1; //1,1=0,1 if (val[i, 0] == val[j, 0]) //0,0=1,0 { if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1])) //0,1>1,1 { temp0 = val[i, 1]; //0,1 val[i, 1] = val[j, 1]; //0,1=1,1 val[j, 1] = temp0; //1,1 } } } } } } return val; } /// <summary> /// 将二维数降序排列(按降序将上标排列) /// </summary> /// <param name="val"></param> private void ListSorting(string[,] val) { int strLength = val.Length / 2; for (int i = 0; i < strLength / 2; i++) { temp0 = val[i, 0]; temp1 = val[i, 1]; val[i, 0] = val[strLength - 1 - i, 0]; val[i, 1] = val[strLength - 1 - i, 1]; val[strLength - 1 - i, 0] = temp0; val[strLength - 1 - i, 1] = temp1; } for (int i = 0; i < strLength; i++) { for (int j = i + 1; j < (val.Length / 2); j++) { if (val[i, 0] == val[j, 0]) { if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1])) { temp0 = val[i, 1]; val[i, 1] = val[j, 1]; val[j, 1] = temp0; } } } } } /// <summary> /// 输出二维数组 /// </summary> /// <param name="val"></param> /// <returns></returns> private static string WriteStr(string[,] val) { string str = ""; str += "{"; for (int i = 0; i < val.Length / 2; i++) { str += "{"; for (int j = 0; j < 2; j++) { str += val[i, j] + ","; } str = str.Trim(',') + "},"; } str = str.Trim(',') + "}"; return str; }}我写的不过谢谢楼上的哥们 C#DES加解密ECB 解密问题 求助如何在vs2008的web中用DataWindow.net2.5 急求解答(右键问题) 小弟急需免费的ASP.net空间,小一点没关系 在对话框上动态添加label和textbox 调用第三方接口出现程序异常的解决方法 如何实现VS.NET IDE中那种隐藏控件框,属性框一样的效果呢? 如何用 C# 做 使用者输入 mail 格时的验证 如何用C#实现从一个大的文本文件中(大约100M)分批读数据?? 请帮助一个菜鸟小妹吧,发邮件问题 从工作行为中辨别他是否是一个有经验的开发者 郁闷~透明图片放置在控件上 无法透明 100分
我自已改了,你看看代码吧。
static void Main(string[] args)
{
int[,] x1 = new int[,] { { 0, 0 }, { 0, 1 }, { 2, 0 }, { 2, 1 }, { 1, 0 }, { 1, 1 }, { 3, 0 }, { 3, 1 } };
string[,] x2 = new string[,] { { "3", "0" }, { "3", "1" }, { "2", "0" }, { "2", "1" }, { "1", "0" }, { "1", "1" }, { "0", "0" }, { "0", "1" } };
int tempX = 0;
for (int w = 0; w < x1.GetLength(0) - 1; w++)
{
for (int i = x1.GetLength(0) - 1; i > w; i--)
{
if (x1[i, 0] > x1[i - 1, 0])
{
for (int j = 0; j < x1.GetLength(1); j++)
{
tempX = x1[i, j];
x1[i, j] = x1[i - 1, j];
x1[i - 1, j] = tempX;
}
}
else if (x1[i, 0] == x1[i - 1, 0])
{
if (x1[i, 1] < x1[i - 1, 1])
{
for (int j = 0; j < x1.GetLength(1); j++)
{
tempX = x1[i, j];
x1[i, j] = x1[i - 1, j];
x1[i - 1, j] = tempX;
}
}
}
} }
foreach (int iVal in x1)
{
Console.Write("{0},", iVal);
}
Console.WriteLine();
foreach (string sVal in x2)
{
Console.Write("{0},", sVal);
}
Console.ReadKey();
}
int[,] x1 = new int[,] { { 0, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 }, { 2, 0 }, { 2, 1 }, { 3, 0 }, { 3, 1 } };
int temp;
for (int i = x1.GetLength(0) - 1; i >= 0; i-=2)
{
temp = x1[i, 1];
x1[i, 1] = x1[i - 1, 1];
x1[i - 1, 1] = temp;
}
for (int i = x1 .GetLength (0)-1; i >=0; i--)
{
for (int j = 0; j < x1.GetLength(1); j++)
{
Console.Write("{0}", x1[i, j]);
}
Console.WriteLine();
}
/******************************************************************
** 文件名: test_Default.cs
** 创建人:
** 创建日期: 2010-06-21
** 修改人:
** 最后修改日期:
** 描 述: 将多维数组升/降序排列
** 版 本:1.0
**---------------------------------------------------------------
** Copyright (c) 2010-2011
******************************************************************/
using System;
using System.Web;
public partial class test_Default : System.Web.UI.Page
{
private string temp0 = null;
private string temp1 = null;
private string[,] x1 = new string[,]
{
{"0", "0" },
{ "0", "1" },
{ "1", "0" },
{ "1", "1" },
{ "26", "0" },
{ "26", "1" },
{ "122", "0" },
{ "122", "1" },
{ "2", "0" },
{ "2", "1" },
{ "3", "0" },
{ "3", "1" }
};
private string[,] x2 = new string[,]
{
{"1", "0" },
{ "1", "1" },
{ "2", "0" },
{ "2", "1" },
{ "5", "0" },
{ "5", "1" },
{ "6", "0" },
{ "6", "1" }
};
private string[,] x3 = new string[,]
{
{ "0", "0" },
{ "0", "1" },
{ "1", "0" },
{ "1", "1" },
{ "2", "0" },
{ "2", "1" },
{ "3", "0" },
{ "3", "1" }
};
private string[,] x4 = new string[,]
{
{ "3", "0" },
{ "3", "1" },
{ "2", "0" },
{ "2", "1" },
{ "1", "0" },
{ "1", "1" },
{ "0", "0" },
{ "0", "1" }
};
protected void Page_Load(object sender, EventArgs e)
{
ListSorting(x1);
Response.Write(WriteStr(x1));
}
/// <summary>
/// 将二维数组升/降序排列(按上标最大值排列)
/// </summary>
/// <param name="x1">参数</param>
///<param name="Type">排序类型1为升序,0为降序</param>
/// <returns></returns>
private string[,] Change(string[,] val, int Type)
{
for (int i = 0; i < (val.Length / 2); i++)
{
for (int j = i + 1; j < (val.Length / 2); j++)
{
if (Type == 1)
{
if (Convert.ToInt32(val[i, 0]) <= Convert.ToInt32(val[j, 0]))
{
temp0 = val[i, 0]; //0,0
temp1 = val[i, 1]; //0,1
val[i, 0] = val[j, 0]; //0,0=1,0
val[i, 1] = val[j, 1]; //0,1=1,1
val[j, 0] = temp0; //1,0=0,0
val[j, 1] = temp1; //1,1=0,1
if (val[i, 0] == val[j, 0]) //0,0=1,0
{
if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1])) //0,1>1,1
{
temp0 = val[i, 1]; //0,1
val[i, 1] = val[j, 1]; //0,1=1,1
val[j, 1] = temp0; //1,1
}
}
}
}
if (Type == 0)
{
if (Convert.ToInt32(val[i, 0]) >= Convert.ToInt32(val[j, 0]))
{
temp0 = val[i, 0]; //0,0
temp1 = val[i, 1]; //0,1
val[i, 0] = val[j, 0]; //0,0=1,0
val[i, 1] = val[j, 1]; //0,1=1,1
val[j, 0] = temp0; //1,0=0,0
val[j, 1] = temp1; //1,1=0,1
if (val[i, 0] == val[j, 0]) //0,0=1,0
{
if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1])) //0,1>1,1
{
temp0 = val[i, 1]; //0,1
val[i, 1] = val[j, 1]; //0,1=1,1
val[j, 1] = temp0; //1,1
}
}
}
}
}
}
return val;
}
/// <summary>
/// 将二维数降序排列(按降序将上标排列)
/// </summary>
/// <param name="val"></param>
private void ListSorting(string[,] val)
{
int strLength = val.Length / 2;
for (int i = 0; i < strLength / 2; i++)
{
temp0 = val[i, 0];
temp1 = val[i, 1];
val[i, 0] = val[strLength - 1 - i, 0];
val[i, 1] = val[strLength - 1 - i, 1];
val[strLength - 1 - i, 0] = temp0;
val[strLength - 1 - i, 1] = temp1;
}
for (int i = 0; i < strLength; i++)
{
for (int j = i + 1; j < (val.Length / 2); j++)
{
if (val[i, 0] == val[j, 0])
{
if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1]))
{
temp0 = val[i, 1];
val[i, 1] = val[j, 1];
val[j, 1] = temp0;
}
}
}
}
}
/// <summary>
/// 输出二维数组
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
private static string WriteStr(string[,] val)
{
string str = "";
str += "{";
for (int i = 0; i < val.Length / 2; i++)
{
str += "{";
for (int j = 0; j < 2; j++)
{
str += val[i, j] + ",";
}
str = str.Trim(',') + "},";
}
str = str.Trim(',') + "}";
return str;
}
}
我写的不过谢谢楼上的哥们