1. 选择排序
初始最小值为数组第一位,向后寻找比它小的,有的话更换下标,退出本次循环后,让最小值与第第一位交换,随后直至最后一位。
template<class T>
void SelectSort(std::vector<T> &v){
for(int i = 0; i < v.size(); i++){
int min = i;
for(int j = i + 1; j < v.size(); j++){
if(v[j] < v[min]){
min = j;
}
}
std::swap(v[i],v[min]);
}
}
2. 插入排序
插入排序的思路是,将数组分为有序和无序的两部分,从第二位出发,将前两位进行排序,接着到第三位,将前三位数组进行排序,直至最后一位。
template<class T>
void InsertSort(std::vector<T> &v){
for(int i = 1; i < v.size(); i++){
for(int j = i - 1; j > 0 && v[j] < v[j - 1]; j--){
std::swap(v[j],v[j - 1]);
}
}
}