#include <stdio.h>#include <stdlib.h>int partition(int* arr, int low, int high) {    if (low >= high) {        return -1;    }    int i = low;    int j = high;    int pivot = arr[low];    while(i < j) {        while(i < j && arr[j] >= pivot) {            j--;        }        if (i < j) {            arr[i++] = arr[j];        }        while (i < j && arr[i] < pivot) {            i++;        }        if (i < j)        {            arr[j--] = arr[i];        }    }    arr[i] = pivot;    return i;}int kthSmallest(int* arr, int low, int high, int k) {        while(1) {        int position = partition(arr, low, high);        int index = k - 1;        if (position == index) {            return arr[position];        } else if (position > k) {            high = position - 1;        } else {            low = position + 1;        }    }}int main(int argc, char const *argv[]){    int arr[] = {23, 322, 1, 54, 86, 2, 90, 102, 66, 233, 6, 98};    int length = sizeof(arr) / sizeof(int);    int k = 3;    printf("K-th smallest element is %d\n", kthSmallest(arr, 0, length - 1, k));    return 0;}