快速排序的思想是:在数组随机挑一个位置的数(注意这里一定是随机,不能直接选最左侧的数),然后使用两个指针调整数组,保证被挑中的数的左侧都是小于等于其本身,右侧都是大于其本身。重复以上操作即可。

#include<bits/stdc++.h>
using namespace std;int arr[10] = {1,678,23,78,56,9,67,34,627,787};void quicksort(int left, int right){if(left>=right)return;int i = left;int j = right;//优化 srand((unsigned)time(NULL));int p = rand()%(right-left+1)+left;swap(arr[p],arr[left]);int x = arr[left];while(i<j){while(i<j && arr[j] > x)j--;arr[i]=arr[j];while(i<j && arr[i] <= x)i++;arr[j]=arr[i];}   arr[i] = x;quicksort(left,i-1);quicksort(i+1,right);
}int main()
{  quicksort(0,9);for(int i = 0; i < 10; i++){cout << arr[i] << " ";} return 0;
}

快速排序_two-powinters思想相关推荐

  1. 视频教程-快速排序算法-算法思想-Java

    快速排序算法-算法思想 十三年软件互联网从业经验,使用JDK从1.4到1.8,从传统系统开发到互联网架构,从Struts使用到spring Cloud,拿过2次极客软件创意比赛大奖.曾经摆过地摊,卖过 ...

  2. c语言快速排序_Damp;C思想-快速排序算法

    只能解决一种问题的算法,用处必然是有限的.所以今天介绍一种解决问题的思路,一个可以让我们使用的工具.Divide and Conquer 分而治之 先来说明一下D&C的工作原理: (1) 找出 ...

  3. 快速排序算法实现思想个人理解

    一.概述 快速排序是冒泡排序的改进算法.它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面, ...

  4. 数据结构—快速排序及其实现思想分而治之DC(思维导图版)

    建议将思维导图保存下来观看,或者点击这里在线观看

  5. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  6. 排序学习之---快速排序

    一.前言 快速排序是一种交换排序,它由C. A. R. Hoare在1962年提出. 二.算法思想 快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都 ...

  7. java 冒泡排序和快速排序 实现

    面试的时候经常会遇到面试官让你直接手写排序算法,下面是冒泡排序和快速排序的实现. 冒泡排序 基本流程就是,自下而上比较相邻的两个元素进行比较,让大的元素往下面沉,较小的往上冒.按照排序规则进行比较,如 ...

  8. 快速排序原理及代码模板

    1.快速排序[基于分治思想] 算法主要步骤: a.确定分界点x:q[l].q[(l+r)/2].q[r].随机选择一个数 b.调整区间[重点]: (1).使得左半边区间的数都小于等于x (2).使得右 ...

  9. 数据结构和算法系列5 七大排序之冒泡排序和快速排序

    排序是我们生活中经常会面对的问题.同学们做操时会按照从矮到高排列:老师查看上课出勤情况时,会按学生学号顺序点名:高考录取时,会按成绩总分降序依次录取等.排序是数据处理中经常使用的一种重要的运算,它在我 ...

  10. 1.16 快速排序法(Quicksort)

    快速排序(Quicksort)是对冒泡排序的一种改进,是一种排序执行效率很高的排序算法. 快速排序的基本思想是:通过一趟排序,将要排序的数据分隔成独立的两部分,其中一部分的所有数据比另外一部分的所有数 ...

最新文章

  1. 如何识别和避免间谍软件
  2. 生态伙伴 | Canva上线飞书应用目录,帮你零门槛轻松做出大师级设计!
  3. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
  4. discuz二次开发笔记(一)------$_G全解析,discuz_g_PHP教程
  5. Ansible的Inventory管理
  6. Nginx + Tomcat Windows下的负载均衡配置
  7. Netty工作笔记0020---Selectionkey在NIO体系
  8. bat 调用class文件_[Golang实现JVM第五篇]静态方法调用的实现
  9. 剑指offer——面试题52:构建乘积数组
  10. OmniPlan Pro 4 for Mac(项目流程管理工具)
  11. 写给新入IT的新人们(转载)
  12. java项目介绍_java项目介绍及创建
  13. Spring:Spring源码下载、保存、编译
  14. 量子计算机需要的物理知识,从超级计算机到量子计算机的飞跃,或将解开物理学中最神秘概念!...
  15. DAEMON tools lite “至少SPTD ..与 Windows 2000或更高版本” 报错的解决
  16. Android 九宫格物理键盘数字英文切换
  17. 谷歌开发者大会焦点:TensorFlow.js可制作微信小程序,Android 10原生支持5G,TF2.0大更新...
  18. 让明日科技今日成真,Mali-G72有何妙招?
  19. Debian系下载deb安装包及依赖包
  20. STM32基础之中断--外部中断

热门文章

  1. 4月17日 键盘大小写指示indicator-lockkeys
  2. Qt 本地化(翻译)
  3. 入口函数ufusr()与ufsta()的区别
  4. 批处理只执行第一句,其他的不被执行,怎么办?
  5. [UIImage _isCached]: message sent to deallocated instance
  6. MySQL替换函数REPLACE替换字符串方法
  7. attachEvent传递给其handler的一个默认参数
  8. 在dropdownlist中使用enum
  9. [原创]消灭eclipse中运行启动的错误:“找不到或无法加载主类”问题
  10. 12306微信小程序上线 提供余票查询暂不支持购票