快速排序算法
2016-05-19 13:56
225 查看
快速排序的原理很简单:先选定集合中一个数,然后将大于它的数字都放在它的右侧,将小于它的数字都放在它的左侧。然后对它左侧和右侧的子集合重复这个过程,直到每个子集合只有一个元素为止。这就是分治法的思想,将大的问题分解为一个个小的问题来解决。
using System; namespace test01 { class Program { static int sortCount = 0; static void Main(string[] args) { int [] array = {2,3,5,6,4,1,8}; Console.Write("数组未排序: "); foreach (int s in array) { Console.Write(" " + s); } Console.WriteLine(""); FastSort(array, 0, array.Length - 1); Console.ReadKey(); } static void FastSort(int[] array, int start, int end) { if(start >= end) return; int low = start; int high = end; int key = array[low]; while(low < high) { while(low < high && array[high] >= key) { high--; } if(low < high) { array[low] = array[high]; low++; } while(low < high && array[low] <= key) { low++; } if(low < high) { array[high] = array[low]; high--; } } array[low] = key; Console.Write("第" + (++sortCount) + "次排序后:"); foreach (int s in array) { Console.Write(" " + s); } Console.WriteLine(""); FastSort(array, low + 1, end); FastSort(array, start, low - 1); } } }输出:
相关文章推荐
- UITableView的属性和方法
- Android中Bitmap和Drawable
- 常用搜索引擎使用技巧
- java基础部分之环境配置(最最基础部分哦)
- easyui datagrid使用updateRow更改单元格值后getChanges无法获取
- 做弹性的云—腾讯云弹性伸缩震撼来袭
- ios app 支持 ipv6-only
- 浏览器缓存Last-modified
- Unity 基础 - 脚本的生命周期
- js中each用法及跳出each及if多层循环
- 如何在CSDN博客中插入动态图(GIF)
- 自定义控件TextVeiw控件之间的间隔
- nagios监控3306端口
- 【测试分析】HTSM模型
- JVM Tomcat性能实战
- linux思想
- 关于group by 两个或以上条件的分析
- Shell引号
- 为什么要使用html模板技术
- Java中系统属性Properties介绍 System.getProperty()参数大全-tomcat设置参数,java获取