冒泡排序
基本思想
冒泡排序是一种交换排序,它的基本思想是:两两比较相领的关键字,如果反序则交换,直到没有反序为止.
代码实现
void BubbleSort(vector<int> *list)
{
bool flag = true;
for (int i = 0; i < list->size() && flag == true; i++)
{
flag = false;
for (int j = list->size() - 1; j > 0; j--)/*从下往上排序*/
{
if ((*list)[j] < (*list)[j - 1])
{
swap((*list)[j], (*list)[j - 1]);
flag = true;
}
}
}
}
简单选择排序
基本思想
简单选择排序法就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换。
代码实现
void SelectSort(vector<int> *list)
{
for (int i = 0; i < list->size() - 1; i++) /*最后一个元素不需要排序*/
{
int min = i;
for (int j = i + 1; j < list->size(); j++)
{
if ((*list)[j] < (*list)[min])
{
min = j;
}
}
if (i != min)
swap((*list)[i], (*list)[min]);
}
}
直接插入排序
基本思想
直接插入排序的基本操作上将一个记录插入到已经排好序到有序表中,从而得到一个新的、记录数增1到有序表。
代码实现
void InsertSort(vector<int> *list)
{
for (int i = 1; i < list->size(); i++)
{
if ((*list)[i] < (*list)[i - 1])
{
for (int j = i; j >= 1; j--)
{
if ((*list)[j] < (*list)[j - 1])/*如果左侧元素大于自己,则交换*/
{
swap((*list)[j], (*list)[j - 1]);
}
else/*如果不大于自己则代表已经到正确位置*/
{
break;
}
}
}
}
}