Categories
Algorithm Algorithms & Design Sort

Strand Sort


import java.util.Iterator;
import java.util.Vector;

public class StrandSort {

	public static void main(String[] args) {
		 int a[] = { 5, 1, 4, 2, 8, 0, 2 };
        //int a[]={10, 5, 30, 40, 2, 4, 9};
		 System.out.println("printing the array");
		 printArray(a);
		 
		 a= strandSort(a);
      
		 System.out.println("printing the sorted array");
		 printArray(a);
	}
	
	 static void printArray(int a[])
	    {
	        int n = a.length;
	        for (int i = 0; i < n; i++)
	            System.out.print(a[i] + " ");
	        System.out.println();
	    }

	 static int [] strandSort(int arr[]){
		 
		 Vector<Integer> inputList = new Vector<Integer>();
		 for(int i=0;i<arr.length;i++)
			 inputList.add(arr[i]);
		 
		 int z=0;
		 Vector<Integer> subList = new Vector();
		 int outputArr [] = new int[arr.length];
		 int lastItem;
		 int outputIndex=arr.length-1;
		
		/* lastItem = inputList.get(0);
		 subList.add(lastItem);
		*/ 
		 while(outputIndex>0 && z<5){
		 z++; 
		 boolean swapped = true;
		 lastItem = inputList.get(0);
		 subList.add(lastItem);
		
		 
		 for(int i=0;i<inputList.size();i++){
			
			 if(inputList.get(i)>lastItem){
				// lastItem = inputList.get(i);
				 addInSubList(subList,inputList.get(i));
			 }
		 }
		
		 Iterator itr = subList.iterator();
		 while(itr.hasNext()){
			 inputList.remove(itr.next());
		 }
		 
		 int subListSize = subList.size();
		 for(int j=subListSize-1;outputIndex>=0 && j>=0;outputIndex--,j--){
			 outputArr[outputIndex]=subList.get(j);
		 }
		 
		 System.out.println("inputList::"+inputList);
		 System.out.println("subList::"+subList);
		 printArray(outputArr);
		 
		 subList = new Vector();
		 
		 }
		 
		 return outputArr;
	 }
	 
	 static void  addInSubList(Vector subList,int item){
		 int i=0;
		 for(;i<subList.size() && (int)subList.get(i) < item;i++);
		subList.add(i, item); 
		 
	 }
}

Output :


printing the array
5 1 4 2 8 0 2 
inputList::[1, 4, 2, 0, 2]
subList::[5, 8]
0 0 0 0 0 5 8 
inputList::[0]
subList::[1, 2, 2, 4]
0 1 2 2 4 5 8 
printing the sorted array
0 1 2 2 4 5 8 


Leave a comment

Design a site like this with WordPress.com
Get started