// ConsoleApplication2.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <ctime>
#include <iostream>
#include <random>
using namespace std;
template<typename T>
void swap(T* x, T* y);
template<typename T>
int partitionAsc(T* arr, int low, int high);
template<typename T>
void quickSortAsc(T* arr, int low, int high);
template<typename T>
void printArray(T* arr, int len);
template<typename T>
void getTArray(T* arr, int len);
template<typename T>
void arrayTDemo(int len);
int main(int args,char**argv)
{
arrayTDemo<uint32_t>(atoi(argv[1]));
std::cout << "Hello World!\n";
}
template<typename T>
void arrayTDemo(int len)
{
T* arr = new T[len];
getTArray(arr, len);
cout << "Before quick sort:" << endl;
printArray(arr, len);
cout << "After the quick sort:" << endl;
quickSortAsc(arr, 0, len - 1);
printArray(arr, len);
delete[]arr;
cout << "Finished in " << __FUNCTION__ << ",line " << __LINE__ << endl;
}
template<typename T>
void getTArray(T* arr, int len)
{
mt19937_64 mt(time(nullptr));
for (int i = 0;i < len;i++)
{
arr[i] = mt();
}
}
template<typename T>
void printArray(T* arr, int len)
{
for (int i = 0;i < len;i++)
{
cout << arr[i] << "\t";
}
cout << endl << endl;
}
template<typename T>
void quickSortAsc(T* arr, int low, int high)
{
if (low <= high)
{
int pivot = partitionAsc(arr, low, high);
quickSortAsc(arr, low, pivot - 1);
quickSortAsc(arr, pivot + 1, high);
}
}
template<typename T>
int partitionAsc(T* arr, int low, int high)
{
T pivot = arr[high];
int i = low - 1;
for (int j = low;j <= high;j++)
{
if (arr[j] < pivot)
{
i = i + 1;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return i + 1;
}
template<typename T>
void swap(T* x, T* y)
{
T temp = *x;
*x = *y;
*y = temp;
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
![]()