1 package org.xiu68.exp.exp1;
 2
 3 public class Exp1_2 {
 4     //实现快速排序算法,采用不同的方法实现线性划分的过程
 5     public static void main(String[] args) {
 6         int[] arr=new int[]{8,7,6,5,4,3,2,1,0};
 7         quitSort(arr,0,arr.length-1);
 8
 9         for(int i=0;i<arr.length;i++)
10             System.out.print(arr[i]+",");
11     }
12
13     //快速排序算法
14         public static void quitSort(int[] r, int i,int j){
15             if(i<j){
16                 int middle=partition2(r, i, j);
17                 quitSort(r, i, middle-1);
18                 quitSort(r, middle+1, j);
19             }
20         }
21
22     //快速排序第一种划分算法
23         public static int partition1(int[] r,int i,int j){
24             int temp=r[i];
25             while(i<j){
26                 while(i<j && r[j]>=temp)    //从j向前找比temp小的值
27                     j--;
28
29                 if(i<j)
30                     r[i++]=r[j]; //将j指向的值移到i的位置,i往后移一个位置
31
32                 while(i<j && r[i]<temp)        //从i向后找比temp大的值
33                     i++;
34
35                 if(i<j)
36                     r[j--]=r[i];
37             }
38
39             r[i]=temp;
40             return i;
41         }
42
43     //快速排序的第二种划分算法
44     public static int partition2(int[] r,int i,int j){
45         int temp=r[i];
46         while(i<j){
47             //从左往右找比temp大的值
48             while(i<j && r[i]<temp)
49                 i++;
50             //从右往左找比temp小的值
51             while(i<j && r[j]>temp)
52                 j--;
53
54             //i和j不是同一个位置
55             if(i<j){
56                 int t=r[j];
57                 r[j]=r[i];
58                 r[i]=t;
59             }
60         }
61         return i;
62     }
63
64 }

View Code

转载于:https://www.cnblogs.com/xiu68/p/7988702.html

Expm 1_2 实现快速排序的算法,并尝试采用不同的方法实现线性的划分过程.相关推荐

  1. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化

    今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...

  2. C语言quick sort快速排序的算法(附完整源码)

    C语言quick sort快速排序的算法 C语言quick sort快速排序的算法完整源码(定义,实现) C语言quick sort快速排序的算法完整源码(定义,实现) #ifndef QUICK_S ...

  3. 理解快速排序 | 打通算法学习的任督二脉

    本文作者胡光 前百度高级算法研发工程师,ACM 国际大学生程序设计大赛亚洲区金牌获得者 具体内容来自他在极客时间开设的免费公开课<常用算法 25 讲> 排序算法在工作中最常用,也是学习很多 ...

  4. 算法复杂度:算法时间复杂度和空间复杂度表示法

    文章地址:http://lzw.me/a/algorithm-complexity.html 算法复杂度分为时间复杂度和空间复杂度. 时间复杂度用于度量算法执行的时间长短:而空间复杂度则是用于度量算法 ...

  5. 算法之旅 | 选择排序法

    算法之旅 | 选择排序法 HTML5学堂-码匠:数据快速的计算与排序,与前端页面性能有直接的关系.由于排序的算法有很多,在本次"算法系列"的分享当中,我们先从简单易上手的选择排序法 ...

  6. LL1分析构造法_数学建模算法--最优赋权法(含代码)

    数学建模算法--最优赋权法(含代码) 作者:郑铿城 本次介绍数学建模和科研写作的方法--最优赋权法最优赋权法经常用于分析评价类问题,从该算法的名称就可以看到,该算法首先要体现"最优" ...

  7. 数据结构与算法(Python)– 回溯法(Backtracking algorithm)

    数据结构与算法(Python)– 回溯法(Backtracking algorithm) 1.回溯法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条 ...

  8. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

    所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...

  9. 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题

    本文设计并实现了PerceptronLA.PseudoIA.LeastSM.LinearDA.KNN等五个算法类,以及DataProcessor的数据处理类.对感知器算法LDA.最小二乘法LSM的伪逆 ...

最新文章

  1. 7.26T1四分图匹配
  2. 设计模式第19篇:访问者模式
  3. 第11讲:Reqeusts + PyQuery + PyMongo 基本案例实战
  4. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (5) - 流水线前端传统译码器
  5. createjs入门
  6. 新手学堂之有刷/无刷动力电调与马达知识
  7. 【UE4】解决局域网联机游戏连接不上的问题
  8. 计算机键盘运算符号输入,电脑上感叹号怎么打出来(电脑键盘符号大全)
  9. MongoDB实战-分片概念和原理
  10. 笔记本电脑查看电池损耗
  11. 英语学习--chap7 形容词
  12. 当电脑打开显示每日新闻联播主要内容
  13. 全面了解风险决策引擎【一】
  14. Java实现Zoho Mail 发送邮件,使用hutool工具类。
  15. 我的ubuntu比windows xp欠缺的地方
  16. html ckplayer.swf,让KindEditor支持MP4视频(使用ckplayer播放器)
  17. python中concat的用法_pandas中concat()的用法
  18. 【刷题】BZOJ 2754 [SCOI2012]喵星球上的点名
  19. 阿里云实践 - iTerm2登录服务器脚本(ssh)
  20. Python matplotlib玫瑰图

热门文章

  1. python日期格式转换成13位时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例...
  2. JAVA消息中间件面试题
  3. Android开发笔记(三十六)展示类控件
  4. JS的forEach和map方法的区别
  5. 【Splay】【启发式合并】hdu6133 Army Formations
  6. RestExpress response中addHeader 导致stackOverflow
  7. 关闭rhel 6.5的selinux
  8. FineUI小技巧(3)表格导出与文件下载
  9. long long _int64使用总结
  10. 规则执行管理平台中远程和服务管理的学习1