1.插入排序 时间复杂度O(n^2)
#include <iostream>
#include <vector>
using namespace std;
void insertionSort(vector<int> &vec) {
for (auto i = vec.begin(); i < vec.end(); i++) {
auto j = vec.begin();
//find the position to insert
for (; j < i; j++) {
if(*i >= *j)
continue;
break;
}
//insert
for(auto k = j; k<i;k++){
auto temp = *k;
*k = *i;
*i = temp;
}
}
}
2.冒泡排序 时间复杂度O(n^2)
void bubbleSort(vector<int> &vec) {
for (auto i = vec.begin(); i < vec.end(); i++) {
for (auto j = i; j < vec.end(); j++) {
if (*j < *i) {
int temp = *j;
*j = *i;
*i = temp;
}
}
}
}
3.快速排序 时间复杂度O(nlgn)
void quickSort(vector<int> &vec, int start, int stop){
if(start < stop){
int pivot = vec[start], low = start, high = stop;
while(low < high){
while(low < high && vec[high] >= pivot)
high --;
vec[low] = vec[high];
while(low < high && vec[low] <= pivot)
low ++;
vec[high] = vec[low];
}
vec[high] = pivot;
quickSort(vec, start, low-1);
quickSort(vec, low+1, stop);
}
}
4.选择排序 时间复杂度O(n^2)
void selectionSort(vector<int> &vec){
for(auto i = vec.begin(); i< vec.end();i++){
auto k = i;
for(auto j = i; j< vec.end();j++){
if(*j < *k)
k = j;
}
int temp = *k;
*k = *i;
*i = temp;
}
}





近期评论