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);
}
}
分享到:
相关推荐
2. 内部排序:将每个小文件加载到内存中,使用已有的内部排序算法(如快速排序、冒泡排序或插入排序)进行排序。由于块内数据量较小,这个过程相对快速。排序完成后,将排序后的块写回磁盘。 3. 合并:最后,使用...
JAVA排序大全 冒泡 快速 选择 归并排序
本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort)这三种经典的排序算法,并探讨它们的原理、优缺点以及在实际应用中的选择。 **快速排序(Quick Sort)**...
根据给定的文件信息,我们将深入探讨两种经典的排序算法——快速排序和归并排序,并结合Java语言实现进行详细解析。 ### 快速排序算法 快速排序是一种高效的排序算法,采用分而治之的策略,其核心思想是选择一个...
本篇将详细介绍标题所提及的四种排序算法:Shell排序、快速排序、归并排序以及堆排序。 1. **Shell排序**: Shell排序是一种改进的插入排序,由Donald Shell于1959年提出。它通过设置一个间隔序列,使得数组中的...
堆排序和快速排序在中大规模数据上表现良好,但快速排序的不稳定性和堆排序的空间复杂度是需要注意的问题;归并排序和希尔排序在稳定性上有优势,而桶排序则对输入数据分布有特定要求。在实际应用中,根据数据特性...
这篇实验报告将深入探讨两种经典的排序算法——快速排序和归并排序,通过对它们在Java环境中的实现和性能测试,揭示它们在处理不同规模数据时的效率差异。 **快速排序(Quick Sort)** 快速排序由C.A.R. Hoare在...
这里我们主要探讨三种排序算法:查找、归并排序和快速排序,它们都是基于不同的策略来达到高效排序的目的。这些算法在Java编程语言中都有实现,因此我们将深入理解它们的工作原理,并结合比赛日程安排的应用场景来...
//排序类 提供int排序的静态方法 有以下排序: 快速排序 堆排序 计数排序 桶排序 归并排序
这里我们关注的是三种经典的排序算法:冒泡排序、归并排序和快速排序。这些排序算法各有特点,适应不同的场景需求。 **冒泡排序(Bubble Sort)** 冒泡排序是一种简单的排序算法,它通过重复遍历待排序的列表,比较...
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
3. **效率高**:在实际应用中,快速排序往往比其他O(n log n)的排序算法(如归并排序)更快,因为它减少了数据交换和移动的操作。 ### 缺点 1. **最坏情况**:当输入数组已经完全有序或逆序时,快速排序的时间...
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
描述中提到这个项目还包括其他排序算法的动画,这意味着除了归并排序外,可能还有冒泡排序、插入排序、选择排序、快速排序等经典算法的实现。每种排序算法都有其独特的特点和适用场景,例如: - **冒泡排序**:简单...
"查找归并排序快速排序比赛日程安排"的标题暗示了这是一个关于编程比赛的日程,其中可能涵盖了三种经典的排序算法:查找、归并排序和快速排序。这些算法都是解决如何有效地对一组数据进行排序的问题。 首先,让我们...
归并排序和快速排序则在效率上更胜一筹,但需要额外的内存空间。在实际应用中,需根据数据特性及需求选择合适的排序算法。了解和掌握这些排序算法,能帮助开发者在面对复杂数据处理时,更好地设计和优化代码。
本文将深入探讨三种经典的排序算法:快速排序、归并排序和冒泡排序。这三种排序算法在不同的场景下有着各自的优势和适用性,而作为C++程序员,理解它们的工作原理及性能特点对于优化代码至关重要。 快速排序是一种...
这里我们将深入探讨快速排序、归并排序、希尔排序、冒泡排序、选择排序以及插入排序这六种经典的排序算法,并通过Java语言来实现它们。 1. **快速排序**:由C.A.R. Hoare在1960年提出,是基于分治策略的一种高效...
JAVA实现选择,冒泡,归并,插入,快速排序。并随机生成不同规模的随机数来测试各种排序方法耗费的时间。
本文将深入探讨四种常见的排序算法:快速排序、归并排序、冒泡排序和选择排序。这些算法不仅在理论上有其重要性,而且在实际编程项目中也经常被用到。 ### 快速排序 快速排序是由英国计算机科学家C.A.R. Hoare提出...