#include <iostream>
#include <iomanip>
using namespace std;
template<typename T,int SIZE>
void quicksort(T arr[],int low,int high=SIZE)//使用模板非类型参数SIZE
{
Quick<T>(arr, low, high);
}
template<typename T>
void Quick(T arr[], int low, int high)
{
if (low >= high)return;
int i = low;
int j = high;
T tmp = arr[low];
while (i < j)
{
while (arr[j] >= tmp && i < j)
j--;
arr[i] = arr[j];
while (arr[i] < tmp && i < j)
i++;
arr[j] = arr[i];
if (i == j)
break;
}
arr[i] = tmp;
Quick<T>(arr, low, i -1);
Quick<T>(arr, i + 1, high);
}
template<typename T>
void Swap(T &elem1, T &elem2)
{
T temp = elem1;
elem1 = elem2;
elem2 = temp;
}
int main()
{
int ar[] = { 12,34,45,23,78,34,90,67,34 };
double arr[] = { 1.2,3.6,2.7,10.6,4.2,5.8,1.01 };
const int size = sizeof(arr) / sizeof(arr[0]);
quicksort<double, size-1>(arr, 0);
for (int i = 0; i < size; i++)
{
cout << setiosflags(ios::fixed); //只有在这项设置后,setprecision才是设置小数的位数。
cout <<setprecision(4)<< arr[i] << endl;
}
}