This is an instruction in one of the exercises in our Java class. First of all, I would like to say that I am “doing my homework”, and I'm not just lazy, asking someone from Qaru to answer this question for me. This particular element was my problem from all the other exercises, because I struggled to find the “perfect algorithm” for this.
Write a JAVA program that will enter 10 integer values and display them in ascending or descending order. Note. Arrays .sort () are not allowed.
This is the code I came up with, it works, but it has one obvious flaw. If I enter the same value two or more, for example:
5, 5, 5, 4, 6, 7, 3, 2, 8, 10
Only one of the three entered 5s will be counted and included in the output. The output I get (for upstream):
2 3 4 5 0 0 6 7 8 10.
import java.util.Scanner; public class Exer3AscDesc { public static void main(String args[]) { Scanner scan = new Scanner(System.in); int tenNums[]=new int[10], orderedNums[]=new int[10]; int greater; String choice; //get input System.out.println("Enter 10 integers : "); for (int i=0;i<tenNums.length;i++) { System.out.print(i+1+"=> "); tenNums[i] = scan.nextInt(); } System.out.println(); //imperfect number ordering algorithm for(int indexL=0;indexL<tenNums.length;indexL++) { greater=0; for(int indexR=0;indexR<tenNums.length;indexR++) { if(tenNums[indexL]>tenNums[indexR]) { greater++; } } orderedNums[greater]=tenNums[indexL]; } //ask if ascending or descending System.out.print("Display order :\nA - Ascending\nD - Descending\nEnter your choice : "); choice = scan.next(); //output the numbers based on choice if(choice.equalsIgnoreCase("a")) { for(greater=0;greater<orderedNums.length;greater++) { System.out.print(orderedNums[greater]+" "); } } else if(choice.equalsIgnoreCase("d")) { for(greater=9;greater>-1;greater--) { System.out.print(orderedNums[greater]+" "); } } } }
ransan32
source share