文档章节

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

春哥大魔王的博客
 春哥大魔王的博客
发布于 2017/02/27 10:47
字数 447
阅读 16
收藏 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

© 著作权归作者所有

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

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

yinwenjie
2017/06/06
0
0
一份不错的php面试题(附答案)

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

斑驳
2014/08/17
0
4
各种排序算法分析与比较

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

长平狐
2013/12/25
178
0
接触并理解 快速排序【基础+优化+三向切分】

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

LWADE
2017/12/07
0
0
php四种基础算法:冒泡,选择,插入和快速排序法

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

PHP86
2013/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
2
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
5
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部