title: Why doesn't the binary search method work if the array is sorted in descending order?
body: <p>The binary search method is used to find out values from the sorted array which it is not doing. I know the issue involves sorting it in descending order but It won't work can someone help me figure out the issue.
  The descending method is a selection sort if it helps.
  I think the issue is with the method only being able to find the value form an ascending order array but don't know how to make it work on a descending order array</p>
  
  <pre><code>package project;
  
  import java.io.*;
  import java.util.*;
  import java.util.Scanner;
  
  public class project {
      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int Size;//size of the array
          int order; // ascending or descending order
          System.out.println("Put in the amount of expenses you have");
          Size = sc.nextInt();//User input for the amount of expenses
          System.out.println("put in all your expenses");
          int userInput[] = new int[Size];// what the users expenses are
          for (int i = 0; i &lt; userInput.length; i++)//This loop is for if the i value is smaller than user input then put in more values to complete the array
              userInput[i] = sc.nextInt();
          System.out.println("do you want it ascending or descending order. If you want it in ascending press 1 or if you want descending press 2");
          order = sc.nextInt();// select if they wanted it in ascending or descending order
          System.out.print("expenses not sorted : ");
          printExpenses(userInput);
          if (order == 1) {
              expensesAscending(userInput);// If order is equal to one then sort in ascending else if it is equal to 2 then order it descending
          } else if (order == 2) {
              expensedescending(userInput);
  
          }
          int ans = binarySearch(userInput, 0, Size, 10);
          System.out.println(ans);
          if(ans == -1)
              System.out.println("Key not found");
            else
              System.out.println("Key found at position " + (ans));
      }
  
      public static void printExpenses(int[] arr) {
          // this is were it is printed
          for (int i = 0; i &lt; arr.length; i++) {
              System.out.println(arr[i] + "$");
          }
      }
  
      public static void expensedescending(int arr[]) {
          // This is were the selection sort starts
          int N = arr.length;
          for (int i = 0; i &lt; N; i++) {
              int small = arr[i];
              int pos = i;
              for (int j = i + 1; j &lt; N; j++) {
                  if (arr[j] &gt; small) {
                      small = arr[j];
                      pos = j;
                  }
              }
              int temp = arr[pos];
              arr[pos] = arr[i];
              arr[i] = temp;
              System.out.println(": ");
              // Printing array after pass
              printExpenses(arr);
          }
      }
  
      public static void expensesAscending(int arr[]) {
          int N = arr.length;
          for (int i = 1; i &lt; N; i++) {
              int j = i - 1;
              int temp = arr[i];
              while (j &gt;= 0 &amp;&amp; temp &lt; arr[j]) {
                  arr[j + 1] = arr[j];
                  j--;
                  ;
              }
              arr[j + 1] = temp;
              System.out.println(": ");
              // Printing array after pass
              printExpenses(arr);
          }
      }
      static int binarySearch(int[] array, int left, int right, int key) {
          if (left &gt; right) {
            return -1;
          }
  
          int mid = (left + right) / 2;
  
          if (array[mid] == key) {
            return mid;
          }
  
          if (array[mid] &gt; key) {
            return binarySearch(array, left, mid - 1, key);
          }
  
          return binarySearch(array, mid + 1, right, key);
        }
  
  
  
  }
  </code></pre>