插入排序与冒泡排序
插入排序与冒泡排序都是时间复杂度为O(n)且为原地排序的排序算法,在大量的数据下,插入排序比冒泡排序效率更高。因为冒泡排序的数据比较次数很难因为数据原因发生改变,而插入排序会因为数据的有序程度发生改变数据比较次数
#include <iostream>
#include <vector>
using namespace std;
void MaoPaoSort(vector<int> &v)
{
for (int i = 0; i < (int)v.size();i++)
{
bool judge = false;
for (int j = 0; j < v.size() - i - 1; ++j)
{
if(v[j] > v[j+1])
{
int temp = v[j];
v[j] = v[j + 1];
v[j + 1] = temp;
judge = true;
}
}
if(!judge)
{
break;
}
}
}
void XuanZheSort(vector<int> &v)
{
for (int i = 1; i < (int)v.size();++i)
{
int val = v[i];
int j = i - 1;
for (; j >= 0;--j)
{
if(v[j] > val)
{
v[j + 1] = v[j];
}
else
{
break;
}
}
v[j + 1] = val;
}
}
void printfV(vector<int> v)
{
for(auto i : v)
{
cout << i << " ";
}
cout << endl;
}
int main()
{
vector<int> v = {1, 3, 2, 5, 4, 7, 6};
// MaoPaoSort(v);
XuanZheSort(v);
printfV(v);
return 0;
}