c#簡單實現二維陣列和二維陣列列表List<>的轉置
剛看到網上一篇博文裡用sql實現了行列轉置。sql server 2005/2008只用一個pivot函式就可以實現sql server 2000很多行的複雜實現。提到轉置,立刻想起還在求學階段曾經做過的一個練習,用c語言實現二維陣列的轉置。相信大家都做過這個練習。下面利用c#利器也實現一遍,沒有實際意義,練練手而已。
1、二維陣列轉置
class Program
{
public static string[,] Rotate(string[,] array)
{
int x = array.GetUpperBound(0); //一維
int y = array.GetUpperBound(1); //二維
string[,] newArray = new string[y + 1, x + 1]; //構造轉置二維陣列
for (int i = 0; i <= x; i++)
{
for (int j = 0; j <= y; j++)
{
newArray[j, i] = array[i, j];
}
}
return newArray;
}
static void Main(string[] args)
{
string[,] array = new string[4, 2];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 2; j++)
{
array[i, j] = i.ToString() + j.ToString();
}
}
//顯示原陣列
Console.WriteLine("Source Array:");
for (int i = 0; i < 4; i++)
{
string soureResult = string.Empty;
for (int j = 0; j < 2; j++)
{
soureResult += array[i, j] + " ";
}
Console.WriteLine(soureResult);
}
string[,] newArray = Rotate(array);
//顯示轉置後的陣列
Console.WriteLine("Destiney Array:");
for (int i = 0; i < 2; i++)
{
string dstResult = string.Empty;
for (int j = 0; j < 4; j++)
{
dstResult += newArray[i, j] + " ";
}
Console.WriteLine(dstResult);
}
Console.ReadLine();
}
}
2、二維陣列列表List<>的轉置
這個是想到在實際專案中操作集合經常用到泛型List,順便實現一下它的轉置。思路很簡單,根據1,我們已經實現了轉置,所以就要想方設法把泛型List轉換成二維陣列,然後轉置,接著將轉換後的陣列再轉換成泛型List。呵呵,筆者偷懶慣了,其實應該還有其他的方法,不管了,先實現看下效果。
class Program
{
///
/// 二維陣列轉置函式
///
///
///
public static string[,] Rotate(string[,] array)
{
int x = array.GetUpperBound(0); //一維
int y = array.GetUpperBound(1); //二維
string[,] newArray = new string[y + 1, x + 1]; //構造轉置二維陣列
for (int i = 0; i <= x; i++)
{
for (int j = 0; j <= y; j++)
{
newArray[j, i] = array[i, j];
}
}
return newArray;
}
///
/// 將二維列表(List)轉換成二維陣列,二維陣列轉置,然後將二維陣列轉換成列表
///
///
///
public static List<List<string>> Rotate(List<List<string>> original)
{
List<string>[] array = original.ToArray();
List<List<string>> lists = new List<List<string>>();
if (array.Length==0)
{
throw new IndexOutOfRangeException("Index OutOf Range");
}
int x = array[0].Count;
int y = original.Count;
//將列表抓換成陣列
string[,] twoArray = new string[y, x];
for (int i = 0; i < y; i++)
{
int j = 0;
foreach (string s in array[i])
{
twoArray[i, j] = s;
j++;
}
}
string[,] newTwoArray = new string[x, y];
newTwoArray = Rotate(twoArray);//轉置
//二維陣列轉換成二維List集合
for (int i = 0; i < x; i++)
{
List<string> list = new List<string>();
for (int j = 0; j < y; j++)
{
list.Add(newTwoArray[i, j]);
}
lists.Add(list);
}
return lists;
}
static void Main(string[] args)
{
List<List<string>> sourceList = new List<List<string>>(); //測試的二維List
for (int i = 0; i < 4; i++)
{
List<string> list = new List<string>();
for (int j = 0; j < 2; j++)
{
list.Add(i.ToString() + j.ToString());
}
sourceList.Add(list);
}
//顯示原列表
Console.WriteLine("Source List:");
for (int i = 0; i < sourceList.Count; i++)
{
string soureResult = string.Empty;
for (int j = 0; j < sourceList[i].Count; j++)
{
soureResult += sourceList[i][j] + " ";
}
Console.WriteLine(soureResult);
}
List<List<string>> dstList = Rotate(sourceList);
//顯示轉置後的列表
Console.WriteLine("Destiney List:");
for (int i = 0; i < dstList.Count; i++)
{
string dstResult = string.Empty;
for (int j = 0; j < dstList[i].Count; j++)
{
dstResult += dstList[i][j] + " ";
}
Console.WriteLine(dstResult);
}
Console.ReadLine();
}
}
來自:http://www.cnblogs.com/wjfluisfigo/archive/2009/11/15/1603130.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-619741/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- 二維陣列和稀疏陣列互轉陣列
- Java實現普通二維陣列和稀疏陣列的相互轉換Java陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- Java 二維陣列轉一維Java陣列
- C#二維陣列在SLG中的實現和使用C#陣列
- 二維陣列陣列
- PHP中二維陣列與多維陣列PHP陣列
- 指標陣列和陣列指標與二維陣列指標陣列
- 求二維陣列中最大子陣列的和陣列
- 二維陣列排序陣列排序
- Java二維陣列Java陣列
- vector 二維陣列陣列
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- 實現二維陣列的行列互換陣列
- php 二維陣列排序PHP陣列排序
- 二維陣列查詢陣列
- 二維樹狀陣列陣列
- 二維陣列行排序陣列排序
- 二維陣列練習陣列
- Java 學習筆記 二維陣列和物件陣列Java筆記陣列物件
- 二維陣列的獲取陣列
- Rust與Java程式碼比較:將二維陣列轉為三維陣列RustJava陣列
- C#中如何獲取二維陣列的行數和列數?C#陣列
- 二維陣列笛卡爾積js實現陣列JS
- 簡單介紹Lua一維陣列與多維陣列的使用陣列
- 7-蛇形二維陣列陣列
- JAVA基礎--二維陣列Java陣列
- Kotlin建立二維Int陣列Kotlin陣列
- 二維陣列與指標陣列指標
- 二維陣列中的查詢陣列
- C的二維陣列(習題)陣列
- 多維陣列轉一維陣列(降維的多種方式)陣列
- 資料結構之陣列和矩陣--矩陣&不規則二維陣列資料結構陣列矩陣
- C# 一維陣列如何快速實現陣列元素的資料型別的轉換?C#陣列資料型別
- 最長公共子串 二維陣列 Go實現陣列Go
- 二維陣列的指標的理解陣列指標
- 二維陣列JSON.stringify 後,第二層陣列解析為空陣列JSON