#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 10
void quick_sort(int arr[], int start, int end);
int partition(int arr[], int low, int high);
int main() {
int i = 0;
int arr[N] = {1,33,5,2,5,66,2,7,7,85};
for (int i = 0; i < 10; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
int low = 0;
int high = sizeof(arr) / sizeof(arr[0])-1;
quick_sort(arr,low,high);
for (int i = 0; i < 10; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
return 0;
}
void quick_sort(int arr[],int start,int end) {
int temp;
if (start<end) {
temp = partition(arr,start,end);
quick_sort(arr,start,temp-1);
quick_sort(arr,temp+1,end);
}
}
int partition(int arr[],int low,int high) {
int temp = arr[low];
while (low<high) {
while (low<high && arr[high]>=temp) {
high--;
}
if (low<high) {
arr[low++] = arr[high];
}
while (low<high && arr[low]<=temp) {
low++;
}
if (low<high) {
arr[high--] = arr[low];
}
}
arr[low] = temp;
return low;
}