Sort an array in Java

后端 未结 17 1141
傲寒
傲寒 2020-11-22 04:53

I\'m trying to make a program that consists of an array of 10 integers which all has a random value, so far so good.

However, now I need to sort them in order from l

17条回答
  •  时光取名叫无心
    2020-11-22 05:15

    If you want to build the Quick sort algorithm yourself and have more understanding of how it works check the below code :

    1- Create sort class

    class QuickSort {
        private int input[];
        private int length;
    
        public void sort(int[] numbers) {
            if (numbers == null || numbers.length == 0) {
                return;
            }
            this.input = numbers;
            length = numbers.length;
            quickSort(0, length - 1);
        }
        /*
         * This method implements in-place quicksort algorithm recursively.
         */
    
        private void quickSort(int low, int high) {
            int i = low;
            int j = high;
    
            // pivot is middle index
            int pivot = input[low + (high - low) / 2];
    
            // Divide into two arrays
            while (i <= j) {
                /**
                 * As shown in above image, In each iteration, we will identify a
                 * number from left side which is greater then the pivot value, and
                 * a number from right side which is less then the pivot value. Once
                 * search is complete, we can swap both numbers.
                 */
                while (input[i] < pivot) {
                    i++;
                }
                while (input[j] > pivot) {
                    j--;
                }
                if (i <= j) {
                    swap(i, j);
                    // move index to next position on both sides
                    i++;
                    j--;
                }
            }
    
            // calls quickSort() method recursively
            if (low < j) {
                quickSort(low, j);
            }
    
            if (i < high) {
                quickSort(i, high);
            }
        }
    
        private void swap(int i, int j) {
            int temp = input[i];
            input[i] = input[j];
            input[j] = temp;
        }
    }
    

    2- Send your unsorted array to Quicksort class

    import java.util.Arrays;
    
    
    public class QuickSortDemo {
    
        public static void main(String args[]) {
            // unsorted integer array
            int[] unsorted = {6, 5, 3, 1, 8, 7, 2, 4};
            System.out.println("Unsorted array :" + Arrays.toString(unsorted));
            QuickSort algorithm = new QuickSort();
            // sorting integer array using quicksort algorithm
            algorithm.sort(unsorted);
            // printing sorted array
            System.out.println("Sorted array :" + Arrays.toString(unsorted));
        }
    }
    

    3- Output

    Unsorted array :[6, 5, 3, 1, 8, 7, 2, 4] 
    Sorted array :[1, 2, 3, 4, 5, 6, 7, 8]
    

提交回复
热议问题