السلام عليكم ورحمة الله وبركاته
ما بطول في شرح المشكلة
عندي في الكود 2method للـ merge sort and quick sort
المخرجات للبرنامج ماتطلع صح
انا اعطيها مصفوفات وابغاها ترتبها بكلا النوعين وتطبعهم لي قبل وبعد الترتيب
فايش المشكلة في الكود لو تكرمتم
لان عندي زحمة اختبارات ومافي وقت ادقق في الكود واكتشف و و و ....
الله يعيطيكم الف عافيه مقدما
public class Main {
static int array[] = new int [10];
static int left=0 , right=array.length-1;
public static void main(String[] args) {
// initialize an array
for (int i=0 ; i<10 ; i++)
{
array = ((int)(Math.random()*10));
System.out.print(array+" ");
}
// merge sort
System.out.println("\nThe array after merge sort is:\n");
MergeSort(array);
System.out.println("\n================================");
// re-initialize an array
for (int i=0 ; i<10 ; i++)
{
array = ((int)(Math.random()*10));
System.out.print(array+" ");
}
// quick sort
System.out.println("\nThe array after quick sort is:\n");
QuickSort(array,left,right);
}
public static void MergeSort (int array[])
{
int x;
if (array.length==1)
System.out.println("end");
else
{
x=(array.length/2);
int A[] = new int [x];
int B[] = new int [A.length-x];
int C[] = new int [A.length + B.length];
for (int i=0 ; i<x ; i++ )
{
A=array;
}
for (int i=0 ; i<B.length ; i++,x++ )
{
B=array[x];
}
Merge(A,B,C);
}
}
public static void Merge (int[]A,int[]B, int[]C)
{
int i, j, k, m, n;
i = 0;
j = 0;
k = 0;
m = A.length;
n = B.length;
while (i < m && j < n)
{
if (A <= B[j])
{
C[k] = A;
i++;
}
else
{
C[k] = B[j];
j++;
}
k++;
}
if (i < m)
{
for (int p = i; p < m; p++)
{
C[k] = Aبسم الله الرحمن الرحيم;
k++;
}
}
else
{
for (int p = j; p < n; p++)
{
C[k] = Bبسم الله الرحمن الرحيم;
k++;
}
}
for (int counter=0 ; counter<C.length ; counter++)
System.out.print(C[counter] + " ");
}
public static void QuickSort (int A[], int left, int right)
{
int index = partition(A, left, right);
if (left < index - 1)
QuickSort(A, left, index - 1);
if (index < right)
QuickSort(A, index, right);
for (int counter=0 ; counter<A.length ; counter++)
System.out.print(A[counter] + " ");
}
public static int partition(int arr[], int left, int right)
{
int i = left, j = right;
int temp;
int pivot = arr[(left + right) / 2];
while (i <= j)
{
while (arr < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j)
{
temp = arr;
arr = arr[j];
arr[j] = temp;
i++;
j--;
}
}
return i;
}
}