P1177【模板】快速排序(JAVA语言)
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main{
static Scanner in=new Scanner(System.in);
static int n=in.nextInt();
static long[] a=new long[n+5];
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0,j=n-1;
for(int t=0;t<n;t++){
a[t]=in.nextInt();
}
// daluan();
// QuickSort(i,j);
sort(i,j);
for(int t=0;t<n;t++){
System.out.print(a[t]+" ");
}
}
private static void daluan() {
// TODO Auto-generated method stub
List<Integer> lst = new ArrayList<Integer>();
for(int i=0;i<n;i++){
lst.add(Integer.valueOf(String.valueOf(a[i])));
}
// System.out.println(lst);
Collections.shuffle(lst);
for(int i=0;i<n;i++){
a[i]=lst.get(i);
}
}
private static void QuickSort(int start,int end) //start为待排序起点,end为待排序终点
{
if(start>=end)return;//如果待排序只有一个元素,直接return
int i=start;
int j=end;
long k=a[start];
while(i<j)
{
while(a[j]>=k&&i<j)
{
j--;
}
swap(i,j);
k=a[j];
while(a[i]<=k&&i<j)
{
i++;
}
swap(i,j);
k=a[i];
}
QuickSort(start,i-1);
QuickSort(j+1,end);
}
static void sort(int left,int right){
int l=left;
int r=right;
long pivot=a[(left+right)/2];//找中间值
long temp=0;
while(l<r){
while(a[l]<pivot) l++;
while(a[r]>pivot) r--;
if(l>=r) break;
temp=a[l];
a[l]=a[r];
a[r]=temp;
if(a[l]==pivot) --r;
if(a[r]==pivot) ++l;
}
if(l==r){
l++;
r--;
}
if(left<r) sort(left,r);
if(right>l) sort(l,right);
}
private static void swap(int i, int j) {
long t=a[i];
a[i]=a[j];
a[j]=t;
}
}
P1177【模板】快速排序(JAVA语言)的更多相关文章
- 深度实战玩转算法, Java语言7个经典应用诠释算法精髓
深度实战玩转算法,以Java语言主讲,通过7款经典好玩游戏,真正将算法用于实际开发,由算法大牛ACM亚洲区奖牌获得者liuyubobobo主讲,看得见的算法,带领你进入一个不一样的算法世界,本套课程共 ...
- 瘋耔java语言笔记
一◐ java概述 1.1 ...
- Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...
- Java语言与JVM中的Lambda表达式全解
Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...
- 《JAVA语言程序设计》上课笔记
教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一. 问几个问题 1. 你们到这里来干什么 ...
- 我们一起来排序——使用Java语言优雅地实现常用排序算法
破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...
- 探索Java语言与JVM中的Lambda表达式
Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法.( ...
- elasticsearch 5.6.4自动创建索引与mapping映射关系 +Java语言
由于业务上的需求 ,最近在研究elasticsearch的相关知识 ,在网上查略了大部分资料 ,基本上对elasticsearch的数据增删改都没有太大问题 ,这里就不做总结了 .但是,在网上始终没 ...
- Java 语言结构【转】
Java 语言结构 基础:包(Package).类(Class)和对象(Object) 了解 Java 的包(Package).类(Class)和对象(Object)这些基础术语是非常重要的,这部分内 ...
随机推荐
- 记一次 Billu_b0x渗透
目录: 0x01 寻找ip 1.这边我们是使用的nmap来寻找我们的靶机IP地址,开始Ip是1,结束是254,153是我kali的ip,所以158就是我们的靶机的ip地址了. 2. 查看端口服务 这边 ...
- mitmproxy 代理工具介绍:rewrite和map local实现
在接口测试中,会用到抓包工具或者代理工具,常用代理工具包括charles. burpsuite. fiddler.mitmproxy等,ssh -D参数 可实现socks5代理.网络嗅探工具可以使用t ...
- 产品经理进阶:如何用UML的顺序图表达思想?
当大家把UML建模语言下的各图形都有所了解后会发现,通过这些图可以全面的.立体的从各个角度表达产品,让产品的表达变得更丰富.更形象. "手中无剑.心中有剑",大多数产品人并不了解计 ...
- Worktile vs Teambition
Worktile vs Teambition 项目管理.团队协作 企业服务.协同办公 worktile 易成科技 北京易成星光科技有限公司 https://www.tianyancha.com/com ...
- node.js 怎么扩大默认的分配的最大运行内存
node.js 怎么扩大默认的分配的最大运行内存 $ node --max-old-space-size=4096 app.js $ NODE_OPTIONS=--max-old-space-size ...
- illustrating javascript prototype & prototype chain
illustrating javascript prototype & prototype chain 图解 js 原型和原型链 proto & prototype func; // ...
- Microsoft Solitaire Collection
Microsoft Solitaire Collection game https://zone.msn.com/gameplayer/gameplayerHTML.aspx?game=mssolit ...
- SMS OTP 表单最佳做法 (短信验证)
<form action="/verify-otp" method="POST"> <input type="text" ...
- 谁能成为数据储存领域领头羊?永久数据存储--NGK的终极使命!
区块链的目的是永远存储交易网络的历史.NGK技术团队能够永久存储其去中心化账本的副本.这是其日后能进行审计关键.一些著名的团队,如Solana和SKALE,现在正在为此与NGK进行最后的集成,我们预计 ...
- 【HTB靶场系列】靶机Carrier的渗透测试
出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...