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)这些基础术语是非常重要的,这部分内 ...
随机推荐
- YouTube 视频下载工具
YouTube 视频下载工具 我不生产视频,只是优秀视频的搬运工! YouTube-dl https://github.com/search?q=youtube-dl https://github.c ...
- iframe & sandbox & 微前端
iframe & sandbox & 微前端 沙箱,容器,隔离 sandbox demo svg progress bar https://stackoverflow.com/ques ...
- DevOps in Action
DevOps in Action DevOps is a set of software development practices that combines software developmen ...
- scroll tabs
scroll tabs https://github.com/NervJS/taro-ui/blob/dev/src/components/tabs/index.tsx https://github. ...
- how to recursively all files in a folder with sudo permissions in macOS
how to recursively all files in a folder with sudo permissions in macOS write bug OK sudo chmod 777 ...
- git merge & git rebase
git merge & git rebase bug error: You have not concluded your merge (MERGE_HEAD exists). hint: P ...
- vue & modal props & form data update bug
vue & modal props & form data update bug OK <div> <BindModal :dialogBindVisible=&qu ...
- NGK是公链吗?NGK为何会这么火?
NGK号称区块链3.0的经典代表之作,公链底层技术开源发布,支撑百万级应用场景,集合了其他公链的优点,不仅拥有超高的TPS,军业级DPOSS共识机制,还有极高的网络确认速度和转账速度.更重要的是无需矿 ...
- Linux安装与使用
1.安装 1.1安装VMware 1.1.1VM12版本安装 1)下载:网盘:链接:https://pan.baidu.com/s/1Jnr--KIy3bSTvRhtB8nfiQ 提取码:czna 2 ...
- XSS跨站脚本攻击(1)
将跨站脚本攻击缩写为XSS,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面的时候,嵌入其中的Web里面的Script代码就会被执行,从而达到恶意攻击用户的目的. 反射型XSS 反射 ...