1.冒泡排序
思路:对一个数组里相邻的两个数比较,按照一定的规则(前者大于后者就交换),排序完成以后得到的数组就是按照下标一次变大;
C++实现:
template<class _Ttype>
void OnBubleSort(_Ttype *typeArray, int arrayLength)
{
if (arrayLength==0||array==NULL)
return;
bool bFlag = false;
for (int i = 0; i < arrayLength; i++)
{
bFlag = false;
for (int j = 0; j < arrayLength-i-1; j++)
{
if (typeArray[j]>typeArray[j+1])
{
bFlag = true;
_Ttype temp = typeArray[j];
typeArray[j] = typeArray[j+1];
typeArray[j+1] = temp;
}
}
if (!bFlag)
break;
}
return;
}
2.选择排序
思路:在一个待排数组中选择最大(小)的元素位置与依次与0、1、2、3位置交换下去;
C++代码实现:
template<class _TYPE_template>
void OnSelectSort(_TYPE_template * array, int arrayLength)
{
if (arrayLength==0||array==NULL)
return;
for (int i = 0; i < arrayLength; i++)
{
// 找出index到arrayLength-1为止的位置;
int k = i;
for (int j = i; j < arrayLength; j++)
{
if (array[k]>array[j])
k = j;
}
if (k!=i)
{
_TYPE_template temp = array[i];
array[i] =array[k];
array[k]=temp;
}
}
}
3.直接插入排序
思路:取待排数组中的元素插入到已经排序好的地方。
template<class class_type>
void OnInSertSort(class_type * array, int arrayLength)
{
if (arrayLength==0||array==NULL)
return;
int j ;
for (int i = 1; i < arrayLength; i++)
{
for (j = i-1;j>=0;j--)
{
if (array[i]>array[j])
break;
}
class_type temp = array[i];
for (int k = i-1;k>j;k--)
array[k+1]=array[k];
array[j+1]=temp;
}
}