C# 排序算法记录
2015-06-09 21:29
423 查看
class Program { static void Main(string[] args) { var array = new[] { 11, 3, 24, 5, 0, 2, 4, 6, -1, 101, 101, 5 }; //假设一个最小的值 var minnum = array[0]; for (int i = 0; i < array.Length; i++) { if (array[i] < minnum) { minnum = array[i]; } } //假设一个最大的值 var maxnum = array[0]; for (int i = 0; i < array.Length; i++) { if (array[i] > maxnum) { maxnum = array[i]; } } Console.WriteLine("Min:" + minnum); Console.WriteLine("Max:" + maxnum); Console.WriteLine("=======冒泡排序========"); for (int i = 0; i < array.Length; i++) { for (int j = 0; j < array.Length - i - 1; j++) { var temp = 0; if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } //冒泡排序算法 for (int i = 0; i < array.Length; i++) { Console.Write(array[i]+" "); } Console.WriteLine("\r\n=======快速排序========"); //快速排序算法 var list = new List<int> { 11, 3, 24, 5, 0, 2, 4, 6, -1, 101, 101, 5 }; QuickSort(list, 0, list.Count ); foreach (var item in list) { Console.Write(item+" "); } //二叉树排序 Console.ReadLine(); } /// <summary> /// 快速排序 /// </summary> /// <param name="nums">集合</param> /// <param name="left">开始</param> /// <param name="right">总数</param> private static void QuickSort(List<int> nums, int left, int right) { if (left < right) { int i = left; int j = right - 1; int middle = nums[(left + right) / 2]; while (true) { while (i < right && nums[i] < middle) { i++; } while (j > 0 && nums[j] > middle) { j--; } if (i == j) break; nums[i] = nums[i] + nums[j]; nums[j] = nums[i] - nums[j]; nums[i] = nums[i] - nums[j]; if (nums[i] == nums[j]) j--; } QuickSort(nums, left, i); QuickSort(nums, i + 1, right); } } }
相关文章推荐
- C# Assembly
- C#引用类型,思考
- C#获取CSV文件内容对逗号和引号分隔的处理
- c#选择填空题题库
- C# 简单工厂模式
- 菜鸟学排序算法
- C#学习之接口
- C#获取应用程序版本信息
- C#中的委托(Delegate)和事件(Event)
- c#.NET中容易混淆的委托与接口
- C#向并口设备发送指令以获取并口设备的状态
- C#之委托学习
- 将指定数据写入串口
- C#中为什么要使用委托的?
- C#2.0泛型编程之强制类型转换、继承和泛型
- C# 堆栈和堆 Heap & Stack
- C#读取系统字体颜色与大小的方法
- C#模拟百度登录
- C#实现页面GZip或Deflate压缩的方法
- C# 泛型编程之泛型类、泛型方法、泛型约束