O Quick Sort é um algoritmo de ordenação eficiente e amplamente utilizado, que segue a abordagem de “dividir para conquistar”. Ele funciona da seguinte maneira:
Para o algoritmo Quick Sort, a complexidade é O(n²)
, no pior caso, mas em outras situações, dependendo do pivô escolhido, sua complexidade pode ser: O(n log n)
quando o pivô escolhido é consistentemente o menor ou o maior elemento em cada partição.
Vamos ver na prática como implementar o Quick Sort com C++ Moderno!
#include <iostream>
#include <vector>
#include <functional>
auto partition = [](std::vector<int>& v, int low, int high){
int pivot = v[high];
int i = low - 1;
for (int j = low; j < high; ++j){
if(v[j] <= pivot){
++i;
std::swap(v[i], v[j]);
}
}
std::swap(v[i + 1], v[high]);
return i + 1;
};
std::function<void(std::vector<int>&, int, int)>
quick_sort = [](std::vector<int>& v, int low, int high){
if(low < high){
int p = partition(v, low, high);
quick_sort(v, low, p - 1);
quick_sort(v, p + 1, high);
}
};
int main(){
std::vector<int> v {11, 2, 13, 17, 12, 8, 4};
quick_sort(v, 0, v.size() - 1);
for(auto &var : v){
std::cout << var << ' ';
}
std::cout.put('\n');
return EXIT_SUCCESS;
}
algoritmos cpp cppdaily programacao desenvolvimento