Quicksort 1 - Partition

Sort by

recency

|

402 Discussions

|

  • + 0 comments

    include

    include

    int* quickSort(int arr_count, int* arr, int* result_count) { result_count = arr_count; int j = 0, pivot = arr[0]; int ar = (int*)malloc(arr_count * sizeof(int));

    // Elements less than pivot
    for (int i = 0; i < arr_count; i++) {
        if (arr[i] < pivot) {
            ar[j++] = arr[i];
        }
    }
    
    // Pivot element
    ar[j++] = pivot;
    
    // Elements greater than pivot
    for (int i = 0; i < arr_count; i++) {
        if (arr[i] > pivot) {
            ar[j++] = arr[i];
        }
    }
    
    return ar;
    

    }

    int main() { int arr_count; scanf("%d", &arr_count);

    int arr[arr_count];
    for (int i = 0; i < arr_count; i++) {
        scanf("%d", &arr[i]);
    }
    
    int result_count;
    int* sorted = quickSort(arr_count, arr, &result_count);
    
    for (int i = 0; i < result_count; i++) {
        printf("%d ", sorted[i]);
    }
    printf("\n");
    
    free(sorted);
    return 0;
    

    }

  • + 0 comments

    Java:

    public static List<Integer> quickSort(List<Integer> arr) {
        int pivot = arr.get(0);
        List<Integer> lArr = new ArrayList<>();
        List<Integer> rArr = new ArrayList<>();
        rArr.add(pivot);
        for (int j=1; j < arr.size(); j++) {
            if (arr.get(j) < pivot) {
                lArr.add(arr.get(j));
            } else {
                rArr.add(arr.get(j));
            }
        }
        lArr.addAll(rArr);
        return lArr;
    }
    
  • + 0 comments

    Here is problem solution in python java c++ c and javascript - https://programmingoneonone.com/hackerrank-quicksort-1-partition-problem-solution.html

  • + 0 comments

    vector quickSort(vector arr) { int i=0; int j=arr.size()-1; int p = arr[0]; while(i=arr[i])i++; while(p<=arr[j])j--; if(i

  • + 0 comments

    Here is my c++ solution, you can watch the explanation here : https://youtu.be/2HD41pYh8cU

    vector<int> quickSort(vector<int> arr) {
        vector<int> left, equal, right;
        for(int i = 0; i < arr.size(); i++){
            if(arr[i] < arr[0]) left.push_back(arr[i]);
            else if(arr[i] > arr[0]) right.push_back(arr[i]);
            else equal.push_back(arr[i]);
        }
        left.insert(left.end(), equal.begin(), equal.end());
        left.insert(left.end(), right.begin(), right.end());
        return left;
    }