package com.agl.exea.book;
public class MegerSort {
public static void main(String[] args){
int[] a = {2,3,1,9,50,-1};
meger(a,0,a.length-1);
for(Integer i: a){
System.out.print(i+"**");
}
}
public static void meger(int[] a,int left ,int right){
if(left==right){
return;
}
int center = (left+right)/2;
meger(a,left,center);
meger(a,center+1,right);
msort(a,left,center,right);
}
private static void msort(int[] a, int left, int center, int right) {
int size = (right-left)+1;
int[] tmp = new int[size];
int tmp_check =0;
int l = left;
int r = right;
right = center+1;
while(tmp_check < tmp.length && left<= center && right <=r){
if(a[left]>a[right]){
tmp[tmp_check] = a[left];left++;
}else{
tmp[tmp_check] = a[right]; right++;
}
tmp_check ++;
}
while(right <=r){
tmp[tmp_check] = a[right]; tmp_check ++; right++;
}
while(left <= center){
tmp[tmp_check] = a[left]; tmp_check ++; left++;
}
System.arraycopy(tmp, 0, a, l, tmp.length);
}
}
//快速排序
package com.agl.exea.book;
public class QuicklySort {
public static void main(String[] args) {
int[] a = {2,1,3,0,9,-1,200,12,3,2};
quick(a,0,a.length-1);
for(Integer i : a){
System.out.print(i+"\t");
}
}
public static void quick(int[] a,int left, int right){
if(left >= right){
return;
}
int tmp = a[left];
int k = left;
int r = right;
left = left +1;
int mm=0;
while(left<right){
while(a[left] < tmp && left<right){
left ++;
}
while(a[right] > tmp && left<right){
right --;
}
if( left<right){
mm = a[left];
a[left] = a[right];
a[right] = mm;
left++;
right--;
}else{
break;
}
}
if(left>0){
mm = a[left-1];
a[left-1] = tmp;
a[k] = mm;
}
quick(a,k,left-1);
quick(a,left,r);
}
}
分享到:
相关推荐
JAVA排序大全 冒泡 快速 选择 归并排序
自己编写的基于java的快速排序和归并算法
//排序类 提供int排序的静态方法 有以下排序: 快速排序 堆排序 计数排序 桶排序 归并排序
用java语言实现冒泡排序、插入排序、堆排序、快速排序、归并排序、希尔排序、桶排序,并且对各种排序算法进行性能的比较。
查找归并排序快速排序比赛日程安排)JAVA
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
java快速排序 归并排序 冒泡排序 选择排序
包括冒泡,归并和快速排序三种排序方式的java代码,可执行
查找归并排序快速排序比赛日程安排)JAVAJava源码
JAVA实现选择,冒泡,归并,插入,快速排序。并随机生成不同规模的随机数来测试各种排序方法耗费的时间。
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
快速排序、归并排序、希尔排序、冒泡排序、选择排序、插入排序等8中排序方式原理分析java实现
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
本资源包括一份分治法算法分析文档,4份Java源程序,包括二分查找、归并排序、快速排序、比赛日程安排。
一个算法设计与分析的实验报告,比较归并排序与快速排序的时间差异,这里采用在一个java程序中对随机生成的任意个数分别进行两种方法的排序并记录各自的时间,最后得出结论。 本实验报告附代码以及详细解释
包括所有算法分析设计的实验(java快速排序。归并排序,分治算法,回溯算法,n后问题)
用java实现的常用排序,都可以编译运行。 包括shellSort, quickSort, mergeSort, heapSort
3种排序方法的对比(快速排序,归并排序,冒泡排序)
用ArrayList实现的排序算法,希望对有需要的同学有帮助,如有错误请指出。JDK版本为1.7
八种排序算法原理及Java实现( 冒泡排序+快速排序直接插入排序+希尔排序+选择排序+归并排序+基数排序)