选择排序:
vector<int> quick(vector<int> ch)
{
int index = 0;
for (int i = 0; i < ch.size() - 1; ++i)
{
index = i;
for (int j = i + 1; j < ch.size(); ++j)
{
if (ch[j] < ch[index])
swap(ch[j], ch[index]);
}
}
return ch;
}
冒泡排序:
vector<int> compare(vector<int> ch)
{
for (int i = 0; i < ch.size() - 1; ++i)
{
for (int j = 0; j < ch.size() - 1 - i; ++j)
{
if (ch[j] > ch[j + 1])
swap(ch[j],ch[j+1]);
}
}
return ch;
}
选择排序一般要优于冒泡排序,因为它需要的交换次数较少。
插入排序:
vector<int> insertsort(vector<int> ch)
{
for (int i = 1; i < ch.size(); i++)
{
if (ch[i - 1] > ch[i])
{
int temp = ch[i];
int j = i;
while (j > 0 && ch[j - 1] > temp)
{
ch[j] = ch[j - 1];
j--;
}
ch[j] = temp;
}
}
return ch;
}
快速排序(用的递归):
void quicksort(vector<int> &vec,int left,int right)
{
int i = 0, j = 0, temp = 0;
if (left > right)
return ;
temp = vec[left];
i = left;
j = right;
while (i != j)
{
while (vec[j]>=temp&&i < j)
j--;
while (vec[i]<=temp&&i < j)
i++;
if (i < j)
swap(vec[i],vec[j]);
}
swap(vec[left],vec[i]);
quicksort(vec,left,i-1);
quicksort(vec, i + 1, right);
}