#include "stdafx.h"
#include <iostream>
#include <Windows.h>
using namespace std;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
void print_array(int * arr, int l, int r, int q, int pivot) {
for (int i = 0; i < q; i++) {
if (i == r) {
SetConsoleTextAttribute(hConsole, (WORD)(NULL | 4));
cout << pivot << " ";
SetConsoleTextAttribute(hConsole, (WORD)(NULL | 15));
}
else if (i == l) {
SetConsoleTextAttribute(hConsole, (WORD)(NULL | 4));
cout << arr[i] << " ";
SetConsoleTextAttribute(hConsole, (WORD)(NULL | 15));
}
else {
cout << arr[i] << " ";
}
}
cout << endl;
}
void quickSort(int *numbers, int left, int right, int q)
{
int pivot;
int l_hold = left;
int r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
print_array(numbers, left, right, q, pivot);
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
print_array(numbers, left, right, q, pivot);
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
quickSort(numbers, left, pivot - 1, q);
if (right > pivot)
quickSort(numbers, pivot + 1, right, q);
}
int main()
{
int quantity;
cout << "enter the number of items: ";
cin >> quantity;
int* array;
array = (int *)malloc(quantity * sizeof(int));
cout << "Input the array elements:\n";
for (int i = 0; i < quantity; i++)
cin >> array[i];
cout << "Source array: \n";
for (int i = 0; i < quantity; i++)
cout << array[i] << " ";
cout << "\nInterpretation :" << endl;
quickSort(array, 0, quantity - 1, quantity);
cout << "\nSotred array:\n";
for (int i = 0; i<quantity; i++)
cout << array[i] << " ";
cout << endl;
system("pause");
return 0;
}
I2luY2x1ZGUgInN0ZGFmeC5oIgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxXaW5kb3dzLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CkhBTkRMRSBoQ29uc29sZSA9IEdldFN0ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSk7CnZvaWQgcHJpbnRfYXJyYXkoaW50ICogYXJyLCBpbnQgbCwgaW50IHIsIGludCBxLCBpbnQgcGl2b3QpIHsKCWZvciAoaW50IGkgPSAwOyBpIDwgcTsgaSsrKSB7CgkJaWYgKGkgPT0gcikgewoJCQlTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShoQ29uc29sZSwgKFdPUkQpKE5VTEwgfCA0KSk7CgkJCWNvdXQgPDwgcGl2b3QgPDwgIiAiOwoJCQlTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShoQ29uc29sZSwgKFdPUkQpKE5VTEwgfCAxNSkpOwoJCX0KCQllbHNlIGlmIChpID09IGwpIHsKCQkJU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUoaENvbnNvbGUsIChXT1JEKShOVUxMIHwgNCkpOwoJCQljb3V0IDw8IGFycltpXSA8PCAiICI7CgkJCVNldENvbnNvbGVUZXh0QXR0cmlidXRlKGhDb25zb2xlLCAoV09SRCkoTlVMTCB8IDE1KSk7CgkJfQoJCWVsc2UgewoJCQljb3V0IDw8IGFycltpXSA8PCAiICI7CgkJfQoJfQoJY291dCA8PCBlbmRsOwoKfQp2b2lkIHF1aWNrU29ydChpbnQgKm51bWJlcnMsIGludCBsZWZ0LCBpbnQgcmlnaHQsIGludCBxKQp7CglpbnQgcGl2b3Q7CglpbnQgbF9ob2xkID0gbGVmdDsKCWludCByX2hvbGQgPSByaWdodDsKCXBpdm90ID0gbnVtYmVyc1tsZWZ0XTsKCXdoaWxlIChsZWZ0IDwgcmlnaHQpCgl7CgkJd2hpbGUgKChudW1iZXJzW3JpZ2h0XSA+PSBwaXZvdCkgJiYgKGxlZnQgPCByaWdodCkpCgkJCXJpZ2h0LS07IAoJCWlmIChsZWZ0ICE9IHJpZ2h0KSAKCQl7CgkJCW51bWJlcnNbbGVmdF0gPSBudW1iZXJzW3JpZ2h0XTsgCgkJCXByaW50X2FycmF5KG51bWJlcnMsIGxlZnQsIHJpZ2h0LCBxLCBwaXZvdCk7CgkJCWxlZnQrKzsgCgkJfQoJCXdoaWxlICgobnVtYmVyc1tsZWZ0XSA8PSBwaXZvdCkgJiYgKGxlZnQgPCByaWdodCkpCgkJCWxlZnQrKzsKCQlpZiAobGVmdCAhPSByaWdodCkgCgkJewoJCQludW1iZXJzW3JpZ2h0XSA9IG51bWJlcnNbbGVmdF07CgkJCXByaW50X2FycmF5KG51bWJlcnMsIGxlZnQsIHJpZ2h0LCBxLCBwaXZvdCk7CgoJCQlyaWdodC0tOwoJCX0KCX0KCW51bWJlcnNbbGVmdF0gPSBwaXZvdDsKCXBpdm90ID0gbGVmdDsKCWxlZnQgPSBsX2hvbGQ7CglyaWdodCA9IHJfaG9sZDsKCWlmIChsZWZ0IDwgcGl2b3QpCgkJcXVpY2tTb3J0KG51bWJlcnMsIGxlZnQsIHBpdm90IC0gMSwgcSk7CglpZiAocmlnaHQgPiBwaXZvdCkKCQlxdWlja1NvcnQobnVtYmVycywgcGl2b3QgKyAxLCByaWdodCwgcSk7Cn0KaW50IG1haW4oKQp7CglpbnQgcXVhbnRpdHk7Cgljb3V0IDw8ICJlbnRlciB0aGUgbnVtYmVyIG9mIGl0ZW1zOiAiOwoJY2luID4+IHF1YW50aXR5OwoJaW50KiBhcnJheTsKCWFycmF5ID0gKGludCAqKW1hbGxvYyhxdWFudGl0eSAqIHNpemVvZihpbnQpKTsKCWNvdXQgPDwgIklucHV0IHRoZSBhcnJheSBlbGVtZW50czpcbiI7Cglmb3IgKGludCBpID0gMDsgaSA8IHF1YW50aXR5OyBpKyspCgkJY2luID4+IGFycmF5W2ldOwoJY291dCA8PCAiU291cmNlIGFycmF5OiBcbiI7Cglmb3IgKGludCBpID0gMDsgaSA8IHF1YW50aXR5OyBpKyspCgkJY291dCA8PCBhcnJheVtpXSA8PCAiICI7Cgljb3V0IDw8ICJcbkludGVycHJldGF0aW9uIDoiIDw8IGVuZGw7CglxdWlja1NvcnQoYXJyYXksIDAsIHF1YW50aXR5IC0gMSwgcXVhbnRpdHkpOwoJY291dCA8PCAiXG5Tb3RyZWQgYXJyYXk6XG4iOwoJZm9yIChpbnQgaSA9IDA7IGk8cXVhbnRpdHk7IGkrKykKCQljb3V0IDw8IGFycmF5W2ldIDw8ICIgIjsKCWNvdXQgPDwgZW5kbDsKCXN5c3RlbSgicGF1c2UiKTsKCXJldHVybiAwOwp9