Sunday, November 7, 2010

Recursive Quick Sort

import java.io.*;
import java.util.*;

public class quick
{
private static double[] arr;
public static void main(String[] args)
{
int i;
Scanner in=new Scanner(System.in);
System.out.print("Enter n::");
int n=in.nextInt();
arr=new double[n+1];
for(i=0;i arr[i]=in.nextDouble();
for(i=0;i System.out.print(" "+arr[i]);
quick(0,n-1);
System.out.println("\n\n**************After Sorting****************\n");
for(i=0;i System.out.print(" "+arr[i]);
}

public static void quick(int low,int high)
{
if(low {
int j=partition(low,high);
quick(low,j-1);
quick(j+1,high);
}
}

public static int partition(int low,int high)
{
double pivot = arr[low];
int i = low;
int j = high;
double temp;
do
{
do
{
i++;
}while(arr[i]
while(arr[j]>pivot)
j--;

if(i {
temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;
}
}while(i
//swap pivot n a[j];
arr[low] = arr[j];
arr[j] = pivot;
return j;
}
}

Recursive Merge Sort

import java.io.*;

public class merge
{
public static void main(String a[])
{
int i;
int array[] = {12,9,4,99,120,1,3,10};
System.out.println(" Selection Sort\n\n");
System.out.println("Values Before the sort:\n");
for(i = 0; i < array.length; i++)
System.out.print( array[i]+" ");
System.out.println();
mergeSort_srt(array,0, array.length-1);
System.out.print("Values after the sort:\n");
for(i = 0; i System.out.print(array[i]+" ");
System.out.println();
System.out.println("PAUSE");
}

public static void mergeSort_srt(int array[],int low, int high)
{
if (low >= high)
{
return;
}

int middle = (low + high) / 2;
mergeSort_srt(array, low, middle);
mergeSort_srt(array, middle + 1, high);
int end_low = middle;
int start_high = middle + 1;
while(low<=end_low && start_high<=high)
{
if(array[low] < array[start_high])
low++;
else
{
int temp=array[start_high];
int k;
for(k=start_high;k>low;k--)
array[k]=array[k-1];
array[k]=temp;
end_low++;
low++;
end_low++;
start_high++;
}
}
}
}