I'm going on a software that uses the compareTo function and selection sort to alphabetically sort a string array. Here is the code: Code: ** SelectionSorter class sorts an array of Strings alphabetically. It uses the selection sort algorithm. */ public class SelectionSorter { private String[] a; /** Constructs the selection sorter @param anArray the array to sort */ public SelectionSorter4 (String[] anArray) { a = anArray; } /** Sorts the array managed by this selection sorter */ public void sort () { for (int i = 0 ; i < a.length - 1 ; i+) { int minPos = minimumPosition (i); swap (minPos, i); } } /** Finds the smallest element in a tail region of the array. The elements are String objects in this case, and the comparison is based on the compareTo method of String. @param from the first position of the tail region @return the position of the smallest element in tail region */ private int minimumPosition (int from) { String holder = a [from]; int position = from; for (int i = from ; i < a.length ; i++) { if (a [i].compareTo (holder) > 0) { holder = a [i]; position = i; } } return position; } /** Swaps two entries of the array @param i the first position to swap @param j the second position to swap */ private void swap (int i, int j) { String temp = a [i]; a [i] = a [j]; a [j] = temp; } } Tester class: This is relevant, but there are no difficulties. Code: /** Tests the SelectionSorter4 class which sorts an array of Strings alphabetically. */ import java.util.* ; public class SelectionSorterTester { public static void main(String[] args) { String[] a = randomStringArray(4, 6) ; SelectionSorter sorter = new SelectionSorter(a) ; System.out.println(toString(a)) ; sorter.sort() ; System.out.println("----------Sorted:") ; System.out.println(toString(a)) ; System.out.println("--------------------------------") ; } /** Returns a string representation of the array of Strings @param array the array to make a string from @return a string like [a1, a2, ..., a_n] */ public static String toString(String[] array) { String result = "[" ; for (int i = 0 ; i < array.length - 1; i++) { result += array[i] + ", " ; } result += array[array.length - 1] + "]" ; return result ; } /** Creates an array filled with random Strings. @param length the length of the array @param n the number of possible letters in a string @return an array filled with length random values */ public static String[] randomStringArray(int length, int n) { final int LETTERS = 2 ; String[] a = new String[length] ; Random random = new Random(53) ; for (int i = 0 ; i < length ; i++) { String temp = "" ; int wordLength = 1 + random.nextInt(n) ; for (int j = 0 ; j < wordLength ; j++) { char ch = (char)('a' + random.nextInt(LETTERS)) ; temp += ch ; } a[i] = temp ; } return a ; } } I'm experiencing a problem with my minimumPosition method, which is seen below. The technique is meant to extract the smallest element in an array's tail area so that the selection sort programme may sort the list as described in this handbook. My problem is that when I sort the list and print it using the tester, it publishes it backwards alphabetically with a decrepency in front, e.g. (c,z,x,y...,b,a) instead of alphabetically (a,b,c.. y,x,z) I believe the problem is with the minimumPosition technique, although it appears to be correct to me.
string[]arr={"Sort","Array","C#"}; Array.Sort(arr); Console.WriteLine(String.Join(", ",arr)); Edit: just saw you use Java, above is c# but should be as simple in Java as above I assume.