您的位置:首页 > 其它

用list 接 数值,再讲数值转成 整形数组,排序、再将相邻的数用范围形式表示、

2015-10-29 00:00 288 查看
摘要: C# 将{1,2,3,4,5,6,7,9,11,12}转成{ 1-7,9,11-12}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

List<int> list1=new List<int>();
List<int> list2=new List<int>();

foreach (System.Windows.Forms.Control c in panel5.Controls)
{
if (c is CheckBox)
{
if (((CheckBox)c).Checked == true)
{
list1.Add(int.Parse(((CheckBox)c).Text));

}
else
{

list2.Add(int.Parse(((CheckBox)c).Text));

}
}
}
int[] arr = InsertionSort(list1.ToArray());
int[] arrhold = InsertionSort(list2.ToArray());
CPYC.normal = zhengli(arr);
CPYC.hold = zhengli(arrhold);

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/// <summary>
/// 插入排序法
/// </summary>
/// <param name="list"></param>
public static int[] InsertionSort(int[] list)
{
for (int i = 1; i < list.Length; i++)
{
int t = list[i];
int j = i;
while ((j > 0) && (list[j - 1] > t))
{
list[j] = list[j - 1];
--j;
}
list[j] = t;
}
return list;
}

/// 整理 将相邻的数值用范围的形式表示 {1,2,3}转成{1-3}

public string zhengli (int[] arry)
{

string stringbuild="";
int start, end;
for (int i = 0; i < arry.Length; i++)
{
start = arry[i];

while (i < arry.Length - 1 && arry[i] + 1 == arry[i + 1])
i++;

end = arry[i];

if (start == end)
{
stringbuild += start.ToString()+",";
}
else
{
stringbuild += start + " - " + end+",";
}

}
return stringbuild;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: