CPP 027 – Bubble Sort

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,

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *