package inplacecountingsort; /** *

Title: in place counting sort

*

Description:

*

Copyright: Copyright (c) 2002

*

Company:

* @author Burton Rosenberg * @version 7 June 2002 */ public class InPlaceCountingSort { public static void main(String[] args) { //int [] a = { 1, 2, 3, 4, 5 } ; //int [] a = { 5, 4, 3, 2, 1 } ; //int [] a = {1, 1, 1, 1 } ; //int [] a = { 3, 0, 5, 6, 6, 2, 8, 6, 4, 3 } ; int [] a = { 2, 2, 3, 0, 6, 6, 2, 8, 6, 4, 3 } ; printArray("\nInitial array:", "a", a) ; inPlaceCountingSort( a ) ; printArray("\nFinal array:", "a", a) ; } static int [] createCountArray( int [] a ) { int max = 0 ; for ( int i=0; imax ) max = a[i] ; } return new int [max+1] ; } static void initCountArray( int [] a, int [] c ) { for ( int i=0; i "); while ( nextIndex>k ) { System.out.print(nextIndex+" -> ") ; c[value]-- ; int temp = a[nextIndex] ; a[nextIndex] = value ; value = temp ; nextIndex = c[value] ; } System.out.println(k) ; if (nextIndex==k) a[k] = value ; } static void inPlaceCountingSort( int [] a ) { int [] c = createCountArray(a) ; if ( c==null ) return ; initCountArray( a, c ) ; printArray("\nCounting Array", "c", c) ; for ( int i=0 ; i