1.介绍

快速排序(QuickSort)是对冒泡排序的一种改进,基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,

其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归

以此达到整个数据变成有序序列

2.示意图

3.示例

要求:对[-9,78,0,23,-567,70] 进行从大到小排序

    public class QuickSort
{
public static void Test()
{
int[] arr = { -, , , , -, }; Sort(arr,,arr.Length-); System.Console.WriteLine(string.Join(",",arr));
} public static void Sort(int[] arr ,int left,int right)
{
int l = left; int r = right; //中间值
int middle = arr[(l + r) / ]; //temp临时变量
int temp = ; //while循环的目的是让比middle值小的放在左边 比middle大的值放在右边
while (l<r)
{
//在middle的左边一直找,找到大于等于middle的值才退出
while (arr[l]<middle)
{
l++;
}
//在middle的右边边一直找,找到小于等于middle的值才退出
while (arr[r]>middle)
{
r -= ;
} //如果l>=说明middle的左边两边的值,已按照左边全是小于等于middle的值,右边都是大于middle的值
if (l>=r)
{
break;
} //交换 temp = arr[l]; arr[l] = arr[r]; arr[r] = temp; //如果交换完之后,发现这个arr[l]==middle这个值 ,-- 前移
if (arr[l]==middle)
{
r -= ;
} //如果交换完之后,发现这个arr[r]==middle这个值 ,++ 后移
if (arr[r]==middle)
{
l++;
} } //如果l==r,必须l++,r--,否则会出现栈溢出
if (l==r)
{
l += ; r -= ;
} //向左递归
if (left<r)
{
Sort(arr, left, r);
} //向右递归
if (right>l)
{
Sort(arr, l, right);
} }
}

效果图

最新文章

  1. Node.js入门教程:Node.js如何安装配置并部署第一个网站
  2. js 数组遍历for..in弊端
  3. Jquery:小知识;
  4. C#照片批量压缩小工具
  5. Linux IO调度器相关算法介绍(转)
  6. ORACLE数据库常见问题汇总
  7. linux下查看账号密码的过期时间和设置时间
  8. One.1
  9. jupyter的交互小工具-----ipyleaflet
  10. TCP三次握手的思考?
  11. unity最基本操作
  12. swapper_pg_dir主内核页表、init和kthreadd、do_fork时新建子进程页表、vmalloc与kmalloc
  13. IIS http 错误 401.3 - unauthorized
  14. 批处理DOS基础命令
  15. Run ASP.NET MVC site on mac (mono/xamarin studio)
  16. http://www.cnblogs.com/zhoujinyi/p/3437475.html
  17. [SharePoint 2010]Sandboxed Solution (沙箱解決方案)
  18. 使用rosbag记录openni2_launch消息
  19. hihocoder#1148 : 2月29日 计算闰年的个数
  20. php学习笔记-continue和break

热门文章

  1. c#openCV图片传递-尝试读取或写入受保护的内存。这通常指示其他内存已损坏。解决方法
  2. ArrayList、Vector、LinkedList 区别及底层实现
  3. android 中使用自定义权限在广播中的利用
  4. 【Spring注解驱动开发】如何使用@Value注解为bean的属性赋值,我们一起吊打面试官!
  5. Spring Boot2.x 的Druid连接池配置[附带监控]
  6. hive中如何查询除了其中某个字段剩余所有字段
  7. Python-使用tkinter实现的摇骰子小游戏
  8. css modules是什么?
  9. css3-pointer-events_demo
  10. POJ 1852 Ants(贪心)