java实现快速排序,归并排序
//1.快速排序
import java.util.*; public class Main { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++) {
a[i] = sc.nextInt();
}
qsort(a,0,n-1);
for(int i=0;i<n;i++) {
System.out.print(a[i]+" ");
}
sc.close();
} private static int getPos(int[] a,int left,int right) {
int mid = a[right];
while(left<right) {
while(left<right && a[left]<=mid) {
left++;
}
a[right] = a[left];
while(left<right && a[right]>=mid) {
right--;
}
a[left] = a[right];
}
a[left] = mid; return left;
}
private static void qsort(int[] a,int left,int right) { if(left<right) {
int mid = getPos(a,left,right);
qsort(a,left,mid-1);
qsort(a,mid+1,right);
}
}
}
//归并排序
import java.util.*; public class Main { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++) {
a[i] = sc.nextInt();
}
mergeSort(a,0,n-1);
for(int i=0;i<n;i++) {
System.out.print(a[i]+" ");
}
sc.close();
}
static void mergeSort(int[] a,int start, int end) {
if(start < end) {
int pos = (start+end)/2;
mergeSort(a,start,pos);
mergeSort(a, pos+1, end);
merge(a, start, pos, end);
}
}
static void merge(int[] a, int p,int q,int r) {
int n1 = q - p + 1 + 1;//左边长度
int n2 = r - q + 1;//右边长度 0 1 3
int[] L = new int[n1];
int[] R = new int[n2];
int i,j;
for(i=0;i<n1-1;i++) {
L[i] = a[p+i];
}
for(j=0;j<n2-1;j++) {
R[j] = a[q+j+1];
}
L[n1-1] = 1000000;
R[n2-1] = 1000000;
i=0; j=0;
for(int k=p; k<=r;k++) {
if(L[i] <= R[j]) {
a[k]=L[i];
i++;
}else{
a[k]=R[j];
j++;
}
}
}
}
java实现快速排序,归并排序的更多相关文章
- Java排序之归并排序
Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表.如果参与合并的只有两个有序表,则成为二路合并.对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并 ...
- 9, java数据结构和算法: 直接插入排序, 希尔排序, 简单选择排序, 堆排序, 冒泡排序,快速排序, 归并排序, 基数排序的分析和代码实现
内部排序: 就是使用内存空间来排序 外部排序: 就是数据量很大,需要借助外部存储(文件)来排序. 直接上代码: package com.lvcai; public class Sort { publi ...
- Java 泛型快速排序 以sdut 1196为例
oj链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1196 Java中,Arrays.so ...
- java实现快速排序
package com.wangjj.quicksort; import java.util.Arrays; /** * 快速排序 * @author Administrator * */ publi ...
- Java基础(48):归并排序的Java封装含原理,完整可运行,结合VisualGo网站更好理解)
原理: 归并排序建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用. 将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序, ...
- JAVA排序--[快速排序]
package com.array; public class Sort_Quick { /* * 项目名称:快速排序 ; * 项目要求:用JAVA对数组进行排序,并运用快速排序算法; * 作者:Se ...
- c语言 快速排序---归并排序----堆排序
//快速排序: #include <stdio.h> #define MAX 500000 int s[MAX]; void Q_Sort(int start,int end) { int ...
- Java中快速排序的实现
快速排序是对冒泡排序的一种改进.它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要 小,然后再按次方法对这两部分数据分别进行快速排序,整个排 ...
- 算法-java代码实现归并排序
归并排序 对于一个int数组,请编写一个归并排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] ...
随机推荐
- dubbo-zookeeper demo解析图
- pychram-redis破解
1. Preferences -> Plugins-> 选择右下角Browse repositories 2. 搜索Iedis 3. 找到Iedis插件目录:C:\Users\用户名\.P ...
- django -- 安装django
安装 通过cmd进行安装 pip3 install django==1.11.11 创建django项目 通过命令行进行创建 下面的命令创建了一个名为"mydjango"的Djan ...
- Trie字典树(超详细!!!)
介绍 字典树,也称Trie.字母树,指的是某个字符串集合对应的形如下图的有根树.树的每条边上对应有恰好一个字符,每个顶点代表从根到该节点的路径所对应的字符串(将所有经过的边上的字符按顺序连接起来).有 ...
- Solr7.x学习(8)-使用spring-data-solr
1.maven配置 <dependency> <groupId>org.springframework.data</groupId> <artifactId& ...
- Hive常见错误
1.root is not allowed to impersonate root 修改etc/hadoop/core-site.xml,增加如下配置: <property> <na ...
- SpringCloud组件学习-图
图很清晰,直接放大浏览器,或者下载下来放大看
- OpenSTF 平台搭建
什么是OpenSTF? OpenSTF(Smartphone Test Farm)是一个web端移动设备管理平台,可以从浏览器端远程调试.远程管理设备.其实有点类似于我们现在很火热的云测平台,如:te ...
- 从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)
有序指的是每行从左到右依次变大,每列从上到下依次变大 思路: 从右上顶点开始依次判断当前值与给定值的大小,往左下顶点移动,结束条件是下标超过范围 public class FindNumInOrder ...
- 045 用户登录功能01----JWT和后台代码
(1)有状态登录概述 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session. 例如登录:用户登录后,我们把登录者 ...