# data[].attributes.body
+ Input: dãy số a, phần tử n
+ Output: dãy số đã được sắp xếp tăng dần
- Gọi phần tử đầu tiên là l, phần tử cuối cùng là h, chọn 1 phần tử bất kì(ví dụ chọn phần tử cuối cùng) gọi là chốt. Thực hiện so sánh các phần tử với chốt, nếu phần tử lớn hơn chốt thì dịch chuyển qua phải và ngược lại. Sau khi hoàn thành việc so sánh thì ta được mảng mới được chia thành 2 phần được ngăn cách bởi phần tử chốt. Tiếp tục thực hiện duyệt qua 2 mảng con, cứ tiếp tục cho đến khi toàn bộ phần tử trong mảng được duyệt, khi đó ta được dãy số được sắp xếp tăng dần

# data[].attributes.body
void swap(int &a, int &b)

{

int t = a;

a = b;

b = t;

}

int partition (int arr[], int low, int high)

{

int pivot = arr[high];

int left = low;

int right = high - 1;

while(true){

while(left <= right && arr[left] < pivot)
left++;

while(right >= left && arr[right] > pivot)
right--;

if (left >= right)
break;

sw(arr[left], arr[right]);

left++;

right--;

}

sw(arr[left], arr[high]);

return left;

}

void quickSort(int arr[], int low, int high)

{

if (low < high)

{

int index = partition(arr, low, high);

quickSort(arr, low, index - 1);

quickSort(arr, index + 1, high);

}

}