在java中合并排序我的第一个DS算法 打包所有分类; 导入java.util.Scanner; 公共类合并排序{ 公共静态int A[],B[]; 无效合并数组(int A[],int first,int mid,int last){ int i=第一,j; j=中等; 虽然(i
你只是将一个和除以2,但是你应该将和除以2。替换在java中合并排序我的第一个DS算法 打包所有分类; 导入java.util.Scanner; 公共类合并排序{ 公共静态int A[],B[]; 无效合并数组(int A[],int first,int mid,int last){ int i=第一,j; j=中等; 虽然(i,java,algorithm,sorting,mergesort,Java,Algorithm,Sorting,Mergesort,你只是将一个和除以2,但是你应该将和除以2。替换 package allSortings; import java.util.Scanner; public class MergeSort { public static int A[],B[]; void mergeArray(int A[],int first,int mid,int last){ int i=first,j; j=mid; while(i<=mid && j<=last)
package allSortings;
import java.util.Scanner;
public class MergeSort {
public static int A[],B[];
void mergeArray(int A[],int first,int mid,int last){
int i=first,j;
j=mid;
while(i<=mid && j<=last)
{
if(A[i]<A[j])
B[first++]=A[i++];
else B[first++]=A[j++];
}
while(i<=mid)
B[first++]=A[i++];
while(j<=last)
B[first++]=A[j++];
}
void copyArray(int A[],int last,int B[])
{
int i=0;
while(i<last)
{
A[i]=B[i];i++;
}
}
void splitArray(int A[],int first,int last)
{
if(first<last)
{
int mid=first+last/2;
System.out.println("first:"+first);
splitArray(A,first,mid);
splitArray(A,mid+1,last);
//mergeArray(A,first,mid,last);
//copyArray(A,last,B);
}
}
public static void main(String args[])
{
int n;
A=new int[100];
B=new int[100];
System.out.println("Enter the no. of elements in the Array:"+"\n");
Scanner input;
input=new Scanner(System.in);
n=input.nextInt();
MergeSort m1=new MergeSort();
for(int i=0;i<n;i++)
A[i]=input.nextInt();
System.out.println("\nThe Original array is:");
for(int i=0;i<n;i++)
System.out.format("%d"+" ",A[i]);
m1.splitArray(A,0,n-1);
System.out.println("\nThe Sorted array is:");
for(int i=0;i<n;i++)
System.out.format("%d"+" ",A[i]);
}
与
int-mid=first+last/2;
=>int-mid=(first+last)/2;
是的,谢谢您的帮助:)
int mid=first+last/2;
int mid=(first+last)/2;