由C#数组类型引起的程序BUG说起
2009-03-03 08:17:54 来源:WEB开发网给学生布置了这样一道题目:用面向对象的思想实现冒泡排序算法,要求程序架构代码风格良好,且用Asp.Net实现冒泡的形象显示。决定自己也写下程序,新建类:MySort.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ArraySort
{
public class SortBy
{
//冒泡完成后每次排序趟执行的情况
private ArrayList _EachBubblingDetail = new ArrayList();
/**//// <summary>
/// 冒泡完成后每次排序趟执行的情况
/// </summary>
public ArrayList EachBubblingDetail
{
get
{
return _EachBubblingDetail;
}
}
/**//// <summary>
/// 传入数组实现冒泡排序并把冒泡排序的每趟细节记录
/// </summary>
/// <param name="num">要排序的原数组</param>
public void Bubbling(int[] num)
{
EachBubblingDetail.Add(num);
//冒泡算法
for (int i = 0; i < num.Length - 1; i++)
{
for (int j = 0; j < num.Length - 1 - i; j++)
{
if (num[j] < num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
//添加每趟排序后的当前数组
EachBubblingDetail.Add(num);
}
//添加完成后的数组
EachBubblingDetail.Add(num);
}
}
}
}
新建一个WEB工程调用这个类,
protected void btnSort_Click(object sender, EventArgs e)
{
SortBy obj = new SortBy();
obj.Bubbling(new int[] { 12, 3232, 23, 12, 34, 4555 });
for (int i = 0; i < obj.EachBubblingDetail.Count; i++)
{
divSortResult.InnerHtml += "第" + i + " 趟冒后:";
int[] tem = obj.EachBubblingDetail[i] as int[];
for (int j = 0; j < tem.Length; j++)
{
divSortResult.InnerHtml += " " + tem[j].ToString();
}
divSortResult.InnerHtml += "<br>";
}
}
猜想下程序结果是什么样 ?
为什么?这个结果不是我们所要的,就是说程序没有按照我们的意愿执行,亲爱的朋友,你知道BUG在哪里吗?这个就是我们下篇讨论C#数据类型
赞助商链接