分而治之法实现并归排序
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int n = 7;
int x=1,y=n-1,m = 0;
int B[]=new int[n];
System.out.println("请输入"+y+"个数字");
Scanner scan=new Scanner(System.in);
for(int i=1;i<n;i++)
B[i]=scan.nextInt();
System.out.println("排序后:");
for(int j=1;j<n;j++) {
Algorithms a=new Algorithms();
m=a.max(B, n, x, y);
System.out.print(B[m]+" ");
B[m]=0;
}
scan.close();
}
}
class Algorithms{
int max( int B[],int n,int indexOfMin,int indexOfMax){
if(n<1) return 0;
if(n==1){
indexOfMin=indexOfMax=0;
return 0;
}
int s=1;
if(n%2==1)
indexOfMin=indexOfMax=0;
else{
if(B[0]>B[1]){
indexOfMax=0;indexOfMin=1;
}else {
indexOfMax=1;indexOfMin=0;
}
s=2;
}
for(int i=s;i<n;i+=2){
if(B[i]>B[i+1]){
if(B[i]>B[indexOfMax])
indexOfMax=i;
if(B[i+1]<B[indexOfMin])
indexOfMin=i+1;
}else{
if(B[i+1]>B[indexOfMax])
indexOfMax=i+1;
if(B[i]<B[indexOfMin])
indexOfMin=i;
}
}
return indexOfMax;
}
}