选择排序的基本思想
-每次(例如底 i 次,i = 0 ,1,...,n-2)从后面n-i个待排的数据元素中选出关键字最小的元素,作为有序元素序列底 i 个元素.
template <typename T>
static void Select(T array[] , int len,bool min2max = true)
{
for(int i=0;i < len;i++)
{
int min = i;
for(int j = i+1; j < len ; j++)
{
if( min2max? (array[min] > array[j]) : (array[min] < array[j]))
{
min = j;
}
}
if(min != i)
{
Swap(array[i],array[min]);
}
}
}
插入排序
template <typename T>
static void Insert(T array[] , int len,bool min2max = true)
{
for(int i = 1;i < len;i++)
{
int k = i;
T e = array[i];
for(int j = i- 1;(j>=0) && (min2max ?(array[j] > e) :(array[j] < e));j--)
{
array[j+1] = array[j];
k = j;
}
if(k != i)
{
array[k] = e;
}
}
}
总结:
-选择排序每次选择为拍元素中最下元素
-插入排序每次讲第i个元素插入前面i - 1个已排元素中
-选择排序是不稳定的排序法,插入排序是稳定的排序方法
-选择排序和插入排序的事件复杂度为O(n^2)