Expm 1_2 实现快速排序的算法,并尝试采用不同的方法实现线性的划分过程.
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 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...
- C语言quick sort快速排序的算法(附完整源码)
C语言quick sort快速排序的算法 C语言quick sort快速排序的算法完整源码(定义,实现) C语言quick sort快速排序的算法完整源码(定义,实现) #ifndef QUICK_S ...
- 理解快速排序 | 打通算法学习的任督二脉
本文作者胡光 前百度高级算法研发工程师,ACM 国际大学生程序设计大赛亚洲区金牌获得者 具体内容来自他在极客时间开设的免费公开课<常用算法 25 讲> 排序算法在工作中最常用,也是学习很多 ...
- 算法复杂度:算法时间复杂度和空间复杂度表示法
文章地址:http://lzw.me/a/algorithm-complexity.html 算法复杂度分为时间复杂度和空间复杂度. 时间复杂度用于度量算法执行的时间长短:而空间复杂度则是用于度量算法 ...
- 算法之旅 | 选择排序法
算法之旅 | 选择排序法 HTML5学堂-码匠:数据快速的计算与排序,与前端页面性能有直接的关系.由于排序的算法有很多,在本次"算法系列"的分享当中,我们先从简单易上手的选择排序法 ...
- LL1分析构造法_数学建模算法--最优赋权法(含代码)
数学建模算法--最优赋权法(含代码) 作者:郑铿城 本次介绍数学建模和科研写作的方法--最优赋权法最优赋权法经常用于分析评价类问题,从该算法的名称就可以看到,该算法首先要体现"最优" ...
- 数据结构与算法(Python)– 回溯法(Backtracking algorithm)
数据结构与算法(Python)– 回溯法(Backtracking algorithm) 1.回溯法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条 ...
- java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...
- 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题
本文设计并实现了PerceptronLA.PseudoIA.LeastSM.LinearDA.KNN等五个算法类,以及DataProcessor的数据处理类.对感知器算法LDA.最小二乘法LSM的伪逆 ...
最新文章
- 7.26T1四分图匹配
- 设计模式第19篇:访问者模式
- 第11讲:Reqeusts + PyQuery + PyMongo 基本案例实战
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (5) - 流水线前端传统译码器
- createjs入门
- 新手学堂之有刷/无刷动力电调与马达知识
- 【UE4】解决局域网联机游戏连接不上的问题
- 计算机键盘运算符号输入,电脑上感叹号怎么打出来(电脑键盘符号大全)
- MongoDB实战-分片概念和原理
- 笔记本电脑查看电池损耗
- 英语学习--chap7 形容词
- 当电脑打开显示每日新闻联播主要内容
- 全面了解风险决策引擎【一】
- Java实现Zoho Mail 发送邮件,使用hutool工具类。
- 我的ubuntu比windows xp欠缺的地方
- html ckplayer.swf,让KindEditor支持MP4视频(使用ckplayer播放器)
- python中concat的用法_pandas中concat()的用法
- 【刷题】BZOJ 2754 [SCOI2012]喵星球上的点名
- 阿里云实践 - iTerm2登录服务器脚本(ssh)
- Python matplotlib玫瑰图
热门文章
- python日期格式转换成13位时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例...
- JAVA消息中间件面试题
- Android开发笔记(三十六)展示类控件
- JS的forEach和map方法的区别
- 【Splay】【启发式合并】hdu6133 Army Formations
- RestExpress response中addHeader 导致stackOverflow
- 关闭rhel 6.5的selinux
- FineUI小技巧(3)表格导出与文件下载
- long long _int64使用总结
- 规则执行管理平台中远程和服务管理的学习1