#include <iostream>
using namespace std;
template <class T>
void Swap( T& lhs, T& rhs)
{
T temp;
temp = lhs;
lhs = rhs;
rhs = temp;
}
template <class T>
void BubbleSort(T* array, int len)
{
//从小到大
for (int i= len -1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (array[j] > array[j + 1])
{
Swap(array[j], array[j + 1]);
}
}
}
}
template <class T>
void SelectSort(T* array, int len)
{
int pos = -1;
for (int i = 0; i < len - 1; i++)
{
pos = i;
for (int j = i + 1; j < len; j++)
{
if (array[pos] > array[j])
{
pos = j;
}
}
if (pos != i)
{
Swap(array[i],array[pos]);
}
}
}
template <class T>
void InsertSort(T* array, int len)
{
for (int i = 0; i< len; i++)
{
int temp = array[i];
int j = i - 1;
while( j >=0 && array[j] > temp)
{
array[j + 1] = array[j];
j--;
}
array[j+1] = temp;
}
}
template <class T>
void Show(const T* array, const T* end)
{
while(array != end)
{
cout << *(array++) << " ";
}
cout << endl;
}
template <class T>
void qsort(T* array, int left, int right)
{
if (left >= right)
{
return;
}
Swap(array[left], array[(left + right) /2]);
int last = left;
for (int j = left + 1; j < right; j++)
{
if (array[j] <= array[left])
{
Swap(array[++last], array[j]);
}
}
Swap(array[left], array[last]);
qsort(array, left, last);
qsort(array, last + 1, right);
}
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
int main(int argc, char argvp[])
{
int a[10] = {11,9,10,4,6,5,3,5,7,8};
double d[6] = {6.67,4.34,2323,23423.23,54.234};
qsort(a,0,ARRAY_SIZE(a));
Show(a, a + 10);
return 0;
}
排序算法
最新推荐文章于 2024-09-12 19:02:20 发布