代码:

 public void quickSortRecursive(int paraStart, int paraEnd) {//Nothing to sortif (paraStart >= paraEnd) {return;}// of ifint tempPivot = data[paraEnd].key;DataNode tempNodeForSwap;int tempLeft = paraStart;int tempRight = paraEnd - 1;// Find the position for the pivot.while (true) {while ((data[tempLeft].key < tempPivot) && (tempLeft < tempRight)) {tempLeft++;} // Of whilewhile ((data[tempRight].key >= tempPivot) && (tempLeft < tempRight)) {tempRight--;} // Of whileif (tempLeft < tempRight) {// Swap.System.out.println("Swapping " + tempLeft + " and " + tempRight);tempNodeForSwap = data[tempLeft];data[tempLeft] = data[tempRight];data[tempRight] = tempNodeForSwap;} else {break;} // Of if} // Of while// Swapif (data[tempLeft].key > tempPivot) {tempNodeForSwap = data[paraEnd];data[paraEnd] = data[tempLeft];data[tempLeft] = tempNodeForSwap;} else {tempLeft++;} // Of ifSystem.out.print("From " + paraStart + " to " + paraEnd + ": ");System.out.println(this);quickSortRecursive(paraStart, tempLeft - 1);quickSortRecursive(tempLeft + 1, paraEnd);}// Of quickSortRecursive/************************ Quick sort.**********************/public void quickSort() {quickSortRecursive(0, length - 1);}// Of quickSort/************************ Test the method.**********************/public static void quickSortTest() {int[] tempUnsortedKeys = { 1, 3, 12, 10, 5, 7, 9 };String[] tempContents = { "if", "then", "else", "switch", "case", "for", "while" };DataArray tempDataArray = new DataArray(tempUnsortedKeys, tempContents);System.out.println(tempDataArray);tempDataArray.quickSort();System.out.println("Result\r\n" + tempDataArray);}// Of quickSortTest

运行结果:

------------------------quickSortRecursive-----------------------
I am a data array with 7 item.
(1,if)  (3,then)  (12,else)  (10,switch)  (5,case)  (7,for)  (9,while)
Swapping 2 and 5
Swapping 3 and 4
From 0 to 6: I am a data array with 7 item.
(1,if)  (3,then)  (7,for)  (5,case)  (9,while)  (12,else)  (10,switch)
From 0 to 3: I am a data array with 7 item.
(1,if)  (3,then)  (5,case)  (7,for)  (9,while)  (12,else)  (10,switch)
From 0 to 1: I am a data array with 7 item.
(1,if)  (3,then)  (5,case)  (7,for)  (9,while)  (12,else)  (10,switch)
From 5 to 6: I am a data array with 7 item.
(1,if)  (3,then)  (5,case)  (7,for)  (9,while)  (10,switch)  (12,else)
Result
I am a data array with 7 item.
(1,if)  (3,then)  (5,case)  (7,for)  (9,while)  (10,switch)  (12,else)  

day46--快速排序相关推荐

  1. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  2. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  3. 数据结构学习(十三)、快速排序

    基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...

  4. 快速排序(快排)--->注释超详细

    基本思想:         1.先选取一个基准值(一般选取数组第一个元素).         2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...

  5. 快速排序的两种实现方法(c语言版本)

    经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,--,总之就是基 ...

  6. 【经典算法】快速排序

    与归并排序一样,快速排序使用也使用了分治的思想.下面是对一个典型的子数组A[p,...,r]进行快速排序的三步分治过程: 分解:数组A[p,...,r]被划分成两个(可能为空)子数组A[P,...,q ...

  7. 20140725 快速排序时间复杂度 sTL入门

    1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...

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

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

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

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

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

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

最新文章

  1. printf-小代码,大问题
  2. 敏捷嘉年华——敏捷之旅2012(上海站)
  3. mysql sphinx windows安装_Sphinx在windows下安装使用[支持中文全文检索]
  4. Xuggler开发教程
  5. 计算机dos通讯,PC双机通信DOS
  6. mysql主从复制周期_Mysql主从复制的实现
  7. Linux—解压缩命令总结(tar/zip)
  8. win8信息服务器不可用怎么办,win8系统下开机提示OneDrive选项此服务现在不可用请稍后再试怎么办...
  9. 在线图片水平/垂直均等切割工具
  10. Linq 学习笔记(一)
  11. iOS 使用iPhone配置实用工具 创建桌面快捷方式
  12. 电路设计中发光二极管用作指示灯时的限流电阻如何选择
  13. 如何把docx变为ass_电影字幕转Word教程
  14. 被问:这个BUG为什么没测出来?该如何回答
  15. 广东英语高考怎么计算机,2019广东高考英语听说考试大纲出炉!附三大题型得分套路!...
  16. 小米电视3 android,小米电视系列ROOT教程(含4A,4S,4X等Android6.0.1版机型)
  17. 论文总结:基于可编辑区块链的工业物联网数据管理机制
  18. GreenPlum中性能调优之shared_buffers修改
  19. 函数极限:函数在一点处的极限
  20. solidworks画渐开线直齿轮(不用toolbox和其他工具箱)

热门文章

  1. EasyRTSPServer流媒体服务协议网络视频直播平台对接海康NVR音频不能正常播问题解决方案
  2. UE4之制作局域网游戏
  3. python webm 转 wav
  4. Unity | 如何使用webm透明视频
  5. QT之QLineEdit——实现鼠标点击事件
  6. 面试题7——超级洗衣机
  7. Java不定参数Object… obj 和 Object[] 的区别
  8. 【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】
  9. 【原创】二阶常系数非齐次线性微分方程求特解
  10. discuz二次开发技巧