java二路歸并排序示例分享
更新時(shí)間:2014年02月27日 15:12:48 作者:
這篇文章主要介紹了java二路歸并排序示例,需要的朋友可以參考下
歸并排序就是采用分治法進(jìn)行排序:
(1)將一個(gè)數(shù)組分成小的2個(gè)數(shù)組分別進(jìn)行排序;
(2)之后將分出來的已經(jīng)拍好序的數(shù)組進(jìn)行合并;
復(fù)制代碼 代碼如下:
import java.util.Scanner;
public class MergeSort {
int[] a=null;
int[] b=null;
int n;
Scanner sin=null;
MergeSort()
{
a=new int[10000];
b=new int[10000];
sin=new Scanner(System.in);
}
void sort(int start,int end) //排序a[start...end]
{
int mid;
if(start >= end) //只有一個(gè)元素的時(shí)候,直接返回
return ;
else
{
mid=(end-start)/2; //將元素分成兩半,分別排序
sort(start,start+mid);
sort(start+mid+1,end);
//歸并兩個(gè)有序的數(shù)組a[start...start+mid]和a[start+mid+1...end]
merge(start,start+mid,end);
}
}
void merge(int start,int mid,int end) //歸并
{
int t=start;
int i=start,j=mid+1;
while(i<=mid && j<=end)
{
if(a[i]<a[j])
b[t++]=a[i++];
else
b[t++]=a[j++];
}
while(i<=mid)
b[t++]=a[i++];
while(j<=end)
b[t++]=a[j++];
for(i=start;i<=end;i++) //排序后的內(nèi)容寫回a數(shù)組的相應(yīng)位置去
a[i]=b[i];
}
void run()
{
System.out.print("輸入要排序的數(shù)的個(gè)數(shù):");
n=sin.nextInt();
for(int i=0;i<n;i++)
a[i]=sin.nextInt();
sort(0,n-1);
System.out.println("排序結(jié)果是:");
//輸入要排序的數(shù)據(jù)
for(int i=0;i<n;i++)
System.out.println(a[i]+" ");
}
public static void main(String[] args) {
new MergeSort().run();
}
}
相關(guān)文章
SpringBoot排除自動加載數(shù)據(jù)源方式
這篇文章主要介紹了SpringBoot排除自動加載數(shù)據(jù)源方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05mybatis中association和collection的使用與區(qū)別
在 MyBatis 中,<association>?和?<collection>?是用于配置結(jié)果映射中關(guān)聯(lián)關(guān)系的兩個(gè)元素,本文主要介紹了mybatis中<association>和<collection>的使用與區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Spring中@PropertySource的使用方法和運(yùn)行原理詳解
這篇文章主要介紹了Spring中@PropertySource的使用方法和運(yùn)行原理詳解,PropertySource注解可以方便和靈活的向Spring的環(huán)境容器(org.springframework.core.env.Environment?Environment)中注入一些屬性,這些屬性可以在Bean中使用,需要的朋友可以參考下2023-11-11Java8 使用CompletableFuture 構(gòu)建異步應(yīng)用方式
這篇文章主要介紹了Java8 使用CompletableFuture 構(gòu)建異步應(yīng)用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11