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] ...
随机推荐
- django -- 实现ORM登录
前戏 上篇文章写了一个简单的登录页面,那我们可不可以实现一个简单的登录功能呢?如果登录成功,给返回一个页面,失败给出错误的提示呢? 在之前学HTML的时候,我们知道,网页在往服务器提交数据的时候,都是 ...
- PATB1002写出这个数
参考代码: #include<cstdio> #include<cstring> #include<cstdlib> int main() { char str[1 ...
- 运维-安装rabbitmq 集群
服务器: online-platform-rabbitmq-01 online-platform-rabbitmq-02 online-platform-rabbitmq-03 绑定HOSTS: ...
- redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)
如果想了解 redis 与Memcache的区别参考:Redis和Memcache的区别总结 阿里的面试官问问我为何redis 使用跳表做索引,却不是用B+树做索引 因为B+树的原理是 叶子节点存储数 ...
- keepass口令管理实践
语言修改 加入插件 插件的学习及应用
- 机器学习实战-logistic回归分类
基于LR的回归分类实例 概念 前提理解: 机器学习的三个步骤:模型,损失函数(即样本误差),优化求解(通过损失函数,使得模型的样本误差最小或小于阈值,求出满足条件的参数,优化求解包括:最小二乘法,梯度 ...
- 【windows】ping对方ip端口,tcping工具
1.先下载tcping.exe https://elifulkerson.com/projects/tcping.php 2.把tcping.exe复制到C:\Windows\System32 3.使 ...
- N x N 的矩阵,顺时针旋转
第一种方法: 先打印外圈,再打印内圈 public class RotateMatrix1 { public static void rotate(int[][] matrix) { ; ; ; ]. ...
- golang gin 上传图片到aws s3
要上传图片到aws s3首先需要 知道 aws 的地区 也就是region ,还需要知道储存桶的名字,其次就是Access key ID和Secret access key package handl ...
- STM8L独立看门狗IWDG
简单扼要 void IWDG_Init(void)//初始化 { IWDG->KR = 0xcc;//启动IWDG IWDG->KR = 0x55;//解除PR及RLR的写保护 IWDG- ...