Basic sorting algorithms

Code samples shown are made with C++ for integer vectors

Bubble Sort - C++

				
					void BubbleSort(std::vector<int>& a) {
		for (int i = 0; i < a.size() - 1; ++i) {
			int j = a.size() - 1;
			while (j > i) {
				if (a[j] < a[j - 1]) std::swap(a[j], a[j - 1]);
				j--;
			}
		}
	}
				
			

Improved Bubble Sort

				
					void ImprovedBubbleSort(std::vector<int>& a) {
		for (int i = 0; i < a.size() - 1; ++i) {
			bool isChanged = false;
			int j = a.size() - 1;
			while (j > i) {
				if (a[j] < a[j - 1]) {
					std::swap(a[j], a[j - 1]);
					isChanged = true;
				}
				j--;
			}
			if (!isChanged) return;
		}
	}
				
			

Insertion Sort - C++

				
					void InsertionSort(std::vector<int>& arr) {
		for (int i = 0, j = 0, key = 0; i < arr.size(); i++) {
			j = i - 1;
			key = arr[i];

			while (j >= 0 && arr[j] > key) {
				arr[j + 1] = arr[j];
				j--;
			}
			arr[j + 1] = key;
		}
	}
				
			

Selection Sort - C++

				
					void SelectionSort(std::vector<int>& a) {
		for (int i = 0; i < a.size(); ++i) {
			int min = i;
			for (int j = i; j < a.size(); ++j) if (a[j] < a[min]) min = j;
			std::swap(a[min], a[i]);
		}
	}