您的位置:首页 > 编程语言 > C#

C# 实现冒泡算法--不一定效率,但很容易理解

2011-10-28 12:15 190 查看
说明下冒泡:

需要排序的数组 int[] array = [12, 123, 34, 12, 43, 6, 3, 23, 1234, 5 ];

说明下冒泡的原理:我只贴了两张图,说明下

一、第一遍:循环由下到上的比较,值小的上移(不小的保持不动),继续循环,直到把最小的值移至最上面。循环比较数组的所有的10个数值;

二、第二遍:原理同上一步,唯一不同的是循环比较的个数,因为上一次的循环已经把最小的移至最上面了,所以这次的循环比较中不需要比较最上的的值了,也就是array个数减一,也就是这次只要比较9个数值就行了;

三、以下同理,最后完成排序!





代码示例:

static void Main(string[] args)
{
int[] list = { 12, 123, 34, 12, 43, 6, 3, 23, 1234, 5 };
int count = 0;
count = Sort(list);

Console.WriteLine(count);
Console.WriteLine("**********************");
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}

private static int Sort(int[] a)
{
int count = 0;
for (int i = a.Length - 1; i > 0; i--)//控制第次比较的个数
{
for (int j = 0; j < i; j++)//
{
//用于记录执行次数
count++;
if (a[j] < a[j + 1])
{
//这里使用了不加临时变量时进行数值交换的方法
//当然加个临时变量也是一样的
a[j] = a[j] + a[j + 1];
a[j + 1] = a[j] - a[j + 1];
a[j] = a[j] - a[j + 1];
}
}
}
return count;
}

希望有人能帖个,高效率的冒泡!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐