快速排序——算法系列

快速排序:

思想:主要是利用了分而治之的思想,将一个大的排序问题简化成一个一个小的问题。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Net;
using System.Threading;namespace ConsoleApplication1
{class Program{static void Main(string[] args){for (int i = 1; i <= 5; i++){List<int> list = new List<int>();//插入2k个随机数到数组中for (int j = 0; j < 2000; j++){Thread.Sleep(1);list.Add(new Random((int)DateTime.Now.Ticks).Next(0, 100000));}Console.WriteLine("\n第" + i + "次比较:");Stopwatch watch = new Stopwatch();watch.Start();var result = list.OrderBy(single => single).ToList();//这里这个single=>single不懂
                watch.Stop();Console.WriteLine("\n系统的快速排序耗费时间:" + watch.ElapsedMilliseconds);Console.WriteLine("输出前是十个数:"+string.Join(",",result.Take(10).ToList()));
                watch.Start();new QuickSortClass().QuickSort(list, 0, list.Count - 1);watch.Stop();Console.WriteLine("\n自己的快速排序耗费时间:" + watch.ElapsedMilliseconds);Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));//这里也不是很懂
                }Console.ReadLine();}//快速排序算法
    }public class QuickSortClass{private int Division(List<int> list, int left, int right){int baseNum = list[left];while (left < right){while (left < right && baseNum <= list[right])right--;list[left] = list[right];while (left < right && baseNum >= list[left])left++;list[right] = list[left];}list[left] = baseNum;return left;}public void QuickSort(List<int> list, int left, int right){if (left < right){int i = Division(list, left, right);QuickSort(list, left, i - 1);QuickSort(list, i + 1, right);}}}
}

总结:

快速排序是排序算法中最快的算法了,快的程度令人发指。

http://www.cnblogs.com/huangxincheng/archive/2011/11/14/2249046.html

转载于:https://www.cnblogs.com/7ants/archive/2013/03/11/2954299.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++对象间通信组件,让C++对象“无障碍交流”

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

《Servlet学习笔记》Servlet开发细节-线程安全

Servlet开发细节-线程安全当多个客户端并发访问同一个Servlet时&#xff0c;web服务器会为每一个客户端的访问请求创建一个线程&#xff0c;并在这个线程上调用Servlet的service方法&#xff0c;因此service方法内如果访问了通过一个资源的话&#xff0c;就有可能引发线程安全问…

MSP430F5529 DriverLib 库函数学习笔记(六)定时器A产生PWM波

目录1.通过Timer_A_outputPWM配置产生PWM波初始化函数计算修改占空比的函数整体程序效果2.单定时器产生多路PWM信号初始化函数实验结果3.对称PWM信号的产生初始化程序实验结果平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EX…

host 和TNS设置

host关系到前台ebs应用的登陆问题 路径 host文件路径C:\Windows\System32\drivers\etc\hosttns关系到 plsql developer的应用问题 查询路径方法 未登录条件下打开plsql developer 菜单栏 support info中 第一个可以找到文件所在路径 D:\DevSuiteHome\Network\Admin\tnsnames.…

Key_EXTI_Config:神舟IV

GPIO 输入上拉&#xff0c;按键按下&#xff0c;pin接地&#xff0c;触发中断 Key_Config 1 void Key_Config(void)2 {3 GPIO_InitTypeDef GPIO_InitStructure;4 5 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);6 7 /* Configure KEY1 Button PC4*/8 RCC_APB2…

Java 将HTML转为XML

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(七)定时器B

目录硬知识Timer_B特点及结构Timer_B寄存器定时器B API处理计时器配置和控制的函数参数处理计时器输出的函数参数管理定时器B中断的函数参数平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 16位定时器B(…

数组指针——指向数组的指针(通过指针控制数组)

//一维数组int arr1[5] { 1,2,3,4,5 };int(*arrP)[5] &arr1; //定义数组指针 必须用&arr1, arr1是数组首元素的地址&#xff1b;&arr1是代表数组地址虽然地址都一样但是当加1的时候就有区别了&#xff0c;说明还是代表的不同东西for (int i 0; i < sizeof…

诡异的楼梯

Problem DescriptionHogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的&#xff0c;相反,他们每隔一分钟就变动一次方向. 比如下面的例子里,一开始楼梯在竖直方向,一分钟以后它移动到了水平方向,再过一分钟它又回到了竖直方向.Harry发现对他来说很难找到能…

ruoyi接口权限校验

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(八)模数转换模块(ADC12)

目录硬知识模数转换概述MSP430单片机ADC12模块介绍MSP430单片机ADC12模块操作ADC12的转换模式采样和转换转换存储器使用片内集成温度传感器ADC12模块寄存器ADC_12A API (机翻)处理初始化和转换的函数参数处理中断的函数参数处理ADC_12A的辅助功能的函数参数上机实战&#xff08…

js Cookie

javascript操作Cookie CreateTime--2017年6月2日17:15:36Author:Marydon 参考链接&#xff1a;http://www.jb51.net/article/64330.htm &#xff08;一&#xff09;介绍   JavaScript是运行在客户端的脚本&#xff0c;因此一般是不能够设置Session的&#xff0c;因为Session是…

JFreeChart API文档

JFreeChart API文档 关键字: 报表Version 1.0.0-rc2 JFreeChart目前是最好的java图形解决方案&#xff0c;基本能够解决目前的图形方面的需求&#xff0c;主要包括如下几个方面&#xff1a; JFreeChart类&#xff1a; void setAntiAlias(boolean flag)字体模糊边界 void setBac…

有意思的鼠标指针交互探究

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

php 递归创建目录、递归删除非空目录、迭代创建目录

递归创建目录 方法一 1 function mk_dir($path){2 if(is_dir($path)){  //参数本身是一个目录3 return true;4 }5 6 if(is_dir(dirname($path))){ //参数的父目录是一个目录&#xff0c;则创建目录7 return mkdir($path);8 }9 10 mk_di…

python基本数据类型——str

一、字符串的创建 test str() / "" test str("licheng") / "licheng" 无参数&#xff0c;创建空字符串一个参数&#xff0c;创建普通字符串两个参数&#xff0c;int&#xff08;字节&#xff0c;编码&#xff09;二、字符串的常用方法 #capita…

MSP430F5529 DriverLib 库函数学习笔记(九)SPI

目录硬知识USCI的同步模式SPI概述SPI特性及结构框图同步操作原理与操作USCI寄存器——SPI模式USCI_x_SPI API &#xff08;机翻&#xff09;处理状态和初始化的函数参数处理数据的函数参数管理中断的函数参数DMA相关参数平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5…

轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

软件工程----9软件实现

软件实现是软件产品由概念到实体的一个关键过程。包括代码设计&#xff0c;设计审查&#xff0c;代码走查&#xff0c;代码编译和单元测试。 1 程序设计语言 应用领域&#xff0c;用户要求&#xff0c;系统兼容&#xff0c;可移植性&#xff0c;开发环境 2 软件编码规范 文件命…

深入理解Threadlocal

SUN公司早在JDK1.2的时候就为我们提供了java.lang.ThreadLocal,低版本的JDK所提供的get()返回的是Object对象&#xff0c;需要强制类型转换&#xff0c;使用起来不方便&#xff0c;而在JDK1.5引入了泛型&#xff0c;在一定程度地简化ThreadLocal的使用。 我们知道在spring容器中…