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;
}
希望有人能帖个,高效率的冒泡!
需要排序的数组 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;
}
希望有人能帖个,高效率的冒泡!
相关文章推荐
- C#冒泡算法实现
- 如何理解和实现c#事件
- C# 实现冒泡算法
- Lua的系统学习(杂)_通过Lua调用C#方法(热更新最直观的原理理解)_简单的随机数实现
- C#观察者模式的实现的一点理解。
- C# 深入理解堆栈、堆在内存中的实现
- 冒泡算法、二叉搜索树转双向链表、字符串第一个只出现一次字符C#实现
- C#冒泡算法实现
- C#开发微信门户及应用(31)--微信语义理解接口的实现和处理
- 转:C# 深入理解堆栈、堆在内存中的实现
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
- 体验C#——冒泡算法的C#实现
- C#实现SQL全库检索数据-比较使用DataReader与DataAdapter+Datatable效率,差距惊人!
- 效率最好的排序,用C#实现(面试会考,必须搞懂)
- 深入理解 c# 第四章 一个TryXXX 模式的 可选实现方式
- 如何理解和实现c#事件
- (转帖)使用OpenFileDialog对话框打开文本文件(写此代码的人应该是有一定功力的程序员,因为代码写的很规范,很容易阅读,很好理解,很好调试)
- 思维体操:用c#简单实现按一定规则输出有序数列
- 深入理解C#实现快捷键(系统热键)响应的方法