排序算法:快速排序
来源:互联网 发布:淘宝收获地址怎么改 编辑:程序博客网 时间:2024/05/21 05:18
排序算法:快速排序
基本思想:
1.取基数:从数列中取一个数作为基数
2.分区:将大于基数的数放到他的右边,小于等于基数的数放到左边
3.再对左右区间(以步骤2基数位置产生的左右区间)重复第二步,直到各区间只有一个数
代码示例
详细代码参考文章底部 Github源码
public void QuickSort2(List<int> list, int left, int right) { if (left < right) { int L = left, R = right; int baseNum = list[L]; while (L < R) { while (L < R && list[R] > baseNum) R--; list[L] = list[R]; while (L < R && list[L] <= baseNum) L++; list[R] = list[L]; } list[L] = baseNum; QuickSort2(list, left, L - 1); QuickSort2(list, L + 1, right); } }
调用:
#region 快速排序实例 for (int i = 0; i < testCount; i++) { Stopwatch watch = new Stopwatch(); watch.Start(); var result = list.OrderBy(a => a).ToList(); watch.Stop(); Console.WriteLine($"第{i + 1}次,框架自带快速排序 {count}个数耗时:{watch.ElapsedMilliseconds}ms"); Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList())); watch = new Stopwatch(); watch.Start(); quick.QuickSort2(list, 0, list.Count - 1); watch.Stop(); Console.WriteLine($"第{i + 1}次,快速排序 {count}个数耗时:{watch.ElapsedMilliseconds}ms"); Console.WriteLine("输出前是十个数:" + string.Join(",", list.Take(10).ToList())); Console.WriteLine("************************"); } #endregion
结果:
附:
源码: Github
参考:
白话经典算法系列之六 快速排序 快速搞定
图解快速排序
算法系列15天速成——第一天 七大经典排序【上】
阅读全文
1 0
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 【排序算法】快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 注解:@interface 自定义注解的语法
- BZOJ 1468: Tree 点分治题解
- MapReduce的两种执行环境:本地测试环境,服务器环境
- Linux下实现免密码登录(超详细)
- C++知识点之深/浅拷贝
- 排序算法:快速排序
- Deeplearning 学习资料推介
- String:557. Reverse Words in a String III
- 07.node+express+mongodb 简单整合
- ios移动端点击事件延迟300ms
- shell脚本初认识
- 域名解析-DNS与MDNS-LLMNR
- Tomcat启动报错Dependency mapping for [type=java.lang.String, name='struts.devMode'] already exists.
- SpringMVC,springboot,freemarker笔记