Bu dersimizde bir sıralama algoritması olan bubble sort algoritmasını kodlayacağız. Bu algoritma en basit sıralama algoritmalarından biri. Arrayin başından başlayarak
- 1. elemanla 2. elemanı;
- 2. elemanla 3. elemanı
- 3. elemanla 4. elemanı
- …
karşılaştırıyor. Eğer 2. eleman 1. elemandan küçükse birbirinin yerlerini değiştiriyor (swap). Değilse direk sonraki elemanlara bakıyor. Bu şekilde ikili ikili giderek array’in sonuna kadar gidiyor.
Array sıralı bir hale gelene kadar bu devam ediyor. Sıralı hale geldiğini herhangi bir swap işlemi olmamasından anlıyoruz.
#include <iostream>
#include <vector>
using namespace std;
void print_vec(vector<int> vec) {
for (auto& i : vec)
cout << i << ", ";
cout << endl;
}
vector<int> bubble_sort(vector<int> vec) {
int pass_counter{ 0 };
cout << "pass " << pass_counter++ << ":\t";
print_vec(vec);
while (true){
bool control = true;
for (int i{}; i<vec.size()-1; i++)
if (vec[i] > vec[i + 1]) {
int temp = vec[i];
vec[i] = vec[i + 1];
vec[i + 1] = temp;
control = false;
}
cout << "pass " << pass_counter++ << ":\t";
print_vec(vec);
if (control)
break;
}
return vec;
}
int main() {
vector<int> vec{ 5,1,6,12,51,3,156,23 };
vec = bubble_sort(vec);
}
// pass 0: 5, 1, 6, 12, 51, 3, 156, 23,
// pass 1 : 1, 5, 6, 12, 3, 51, 23, 156,
// pass 2 : 1, 5, 6, 3, 12, 23, 51, 156,
// pass 3 : 1, 5, 3, 6, 12, 23, 51, 156,
// pass 4 : 1, 3, 5, 6, 12, 23, 51, 156,
// pass 5 : 1, 3, 5, 6, 12, 23, 51, 156,
Leave a Reply