QuickSort and Hoare Partition

前端 未结 7 1193
轻奢々
轻奢々 2020-12-01 14:33

I have a hard time translating QuickSort with Hoare partitioning into C code, and can\'t find out why. The code I\'m using is shown below:

void QuickSort(in         


        
7条回答
  •  忘掉有多难
    2020-12-01 15:23

    Straightforward implementation in java.

    public class QuickSortWithHoarePartition {
    
        public static void sort(int[] array) {
            sortHelper(array, 0, array.length - 1);
        }
    
        private static void sortHelper(int[] array, int p, int r) {
            if (p < r) {
                int q = doHoarePartitioning(array, p, r);
                sortHelper(array, p, q);
                sortHelper(array, q + 1, r);
            }
        }
    
        private static int doHoarePartitioning(int[] array, int p, int r) {
            int pivot = array[p];
            int i = p - 1;
            int j = r + 1;
    
            while (true) {
    
                do {
                    i++;
                }
                while (array[i] < pivot);
    
                do {
                    j--;
                }
                while (array[j] > pivot);
    
                if (i < j) {
                    swap(array, i, j);
                } else {
                    return j;
                }
            }
    
        }
    
        private static void swap(int[] array, int i, int j) {
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }
    

提交回复
热议问题