文档章节

基础算法----快速排序

春哥大魔王的博客
 春哥大魔王的博客
发布于 2017/02/27 10:47
字数 447
阅读 16
收藏 0
点赞 0
评论 0

快速排序算法

快速排序使用分治法策略把一个串行分为两个子串行(两个串行的分割点就是基准点,两部分是大于基准点部分和小于基准点部分)。

  1. 数列中选择一个元素作为基准点,常从第一个元素开始;
  2. 序列中小于基准点的元素放到前面,大于基准点的元素放到基准点后面,这个过程称为分区操作;
  3. 递归的把两个子序列(大于基准点部分,小于基准点部分)进行递归操作;
  4. 退出条件,left = right;

代码示例

static int[] arr = { 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 };

#region 快速排序
static void quickSort(int left,int righ)
{
    if (left > righ) {
         return;
}

 int k = arr[left];
 int i = left;
 int j = righ;

while (i!=j)
{
    while (k <= arr[j] && i < j)
     {
         j--;
     }
     while (k >= arr[i] && i<j)
      {
           i++;
       }
    if(i<j)
    {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
     }
}

if (i == j)
{
      arr[left] = arr[i];
      arr[i] = k;
}

quickSort(left,i-1);
quickSort(i+1,righ);
}
#endregion

结果

快速排序

源码

http://git.oschina.net/aspnet/Suan-Fa

© 著作权归作者所有

共有 人打赏支持
春哥大魔王的博客
粉丝 17
博文 119
码字总数 66330
作品 0
海淀
程序员
线程基础:多任务处理(16)——Fork/Join框架(排序算法性能补充)

1、概述 在之前的一篇文章《线程基础:多任务处理(13)——Fork/Join框架(解决排序问题)》中,我们使用了fork/join框架提高归并排序的性 能。那篇文章发布后,有的读者联系我,觉得单就归...

yinwenjie ⋅ 2017/06/06 ⋅ 0

一份不错的php面试题(附答案)

一份不错的php面试题,附答案,有准备换工作的同学可以参考一下. 一、基础题 1. 写出如下程序的输出结果 <?php $str1 = null; $str2 = false; echo $str1==$str2 ? '相等' : '不相等'; $str3 ...

斑驳 ⋅ 2014/08/17 ⋅ 4

接触并理解 快速排序【基础+优化+三向切分】

要点 算法思想与实现,优化思路,性能分析,三向切分,空间,优势 前言 快速排序之所以被称作“快速”,是因为快速排序是我们接触到的最快的通用排序算法,至于原因我们会在后面予以解释。鉴...

LWADE ⋅ 2017/12/07 ⋅ 0

各种排序算法分析与比较

首先,请允许我用这样的题目来作为本博文的题目,但是目前也想不到其他好的题目,所以就先定为这个题目吧。 排序算法对于数据结构和算法课程来说都是非常重要的内容,在数据结构中,排序算法...

长平狐 ⋅ 2013/12/25 ⋅ 0

php四种基础算法:冒泡,选择,插入和快速排序法

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper,虽然很少接触到算法方面的东西 。但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算...

PHP86 ⋅ 2013/12/21 ⋅ 0

ASP.NET工程师面试前需要认真准备的几大知识点。

凭借个人进几年的工作经验和面试经验以及个人认为比较重要的进行如下总结,希望对自己以后和对大家有所帮助。过于基础的问题就省略了。 1、C#语言的基础知识(网上有这发面的面试题对基础知识...

酱哥哥 ⋅ 2015/06/11 ⋅ 1

排序算法-10-算法-分治法(Divide and Conquer)

Divide and Conquer - 分治法 在计算机科学中,分治法是一种很重要的算法。分治法即『分而治之』,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到...

Corwien ⋅ 2016/06/17 ⋅ 0

C语言/C++编程学习数据结构与算法 通俗易懂讲解 快速排序

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 03/20 ⋅ 0

php四种基础算法:冒泡,选择,插入和快速排序法

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper,虽然很少接触到算法方面的东西 。但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算...

带刺的玫瑰 ⋅ 2014/01/06 ⋅ 0

[讨论]php 排序系列的函数内部的C实现是用了哪种排序算法?

ext/standard/php_array.h https://github.com/php/php-src/blob/master/ext/standard/php_array.h #ifndef PHPARRAYH #define PHPARRAYH PHPMINITFUNCTION(array);PHPMSHUTDOWNFUNCTION(arr......

justjavac ⋅ 2013/08/16 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 14分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 21分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 25分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 27分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 30分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 34分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 47分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 今天 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部