''' C++
std::vector
// 插入排序
// 时间复杂度 n^2
void insertSort(vector
{
int len =arr.size();
for(int i=1;i<len;i++)
{
int v =arr[i],j;
for(j=i-1;v<arr[j]&&j>=0;j--)
{
arr[j+1] = arr[j];
}
arr[j+1] = v;
}
}
// 选择排序
void chooseSort(vector
{
int len = arr.size();
// 每次选择len-1次
for(int i=0;i<len-1;i++)
{
int k = -1,v = arr[i];
for(int j=i;j<len;j++)
{
if(v>arr[j]) // 这里写=排序就是不稳定的
{
v = arr[j];
k = j;
}
}
if(k!=-1 && k!=i)
swap(arr[k],arr[i]);
}
}
// 冒泡排序
void popSort(vector
{
int len = arr.size();
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j>0;j--)
{
if(arr.at(j)<arr.at(j-1))
{
swap(arr[j],arr[j-1]);
}
}
}
}
// 快速排序
void quickSort(vector
{
if(L>=R)return;
int l = L-1,r = R+1;
int v = arr[(L+R)/2];
while(l<r)
{
do l++; while(arr[l]<v);
do r--; while(arr[r]>v);
if(l<r)swap(arr[l],arr[r]);
}
quickSort(arr,L,r); // 0,0
quickSort(arr,r+1,R); // 1,1
}
// hash排序
void hashSort(std::vector
std::map<int, int> count;
for (int i : arr)
count[i]++;
arr.clear();
for (const auto& kv : count)
for (int i = 0; i < kv.second; i++)
arr.push_back(kv.first);
}
// 归并排序
void merge(std::vector
std::vector
int i = left, j = mid + 1, k = 0;
while(i <= mid && j <= right)
temp[k++] = vec[i] <= vec[j] ? vec[i++] : vec[j++];
while(i <= mid)
temp[k++] = vec[i++];
while(j <= right)
temp[k++] = vec[j++];
for(k = 0, i = left; i <= right; ++i, ++k)
vec[i] = temp[k];
}
void mergeSort(std::vector
if(left < right) {
int mid = left + (right - left) / 2;
mergeSort(vec, left, mid);
mergeSort(vec, mid + 1, right);
merge(vec, left, mid, right);
}
}
'''