这三种排序原理很简单,直接附上代码,具体看注释,以对数组排序为例

#include <iostream>
using namespace std;
void bubblesort(int *a, int n) {	//a:数组指针    n:数组大小
	for (int i = 1; i < n; i++) {	//一共需要进行n-1次扫描
		//从第i趟时从a[0]到a[n-i-1]都与它们下一个数比较
		for (int j = 0; j < n - i; j++) { //每一趟还未排序的元素个数是n-i+1;需要n-i次比较交换
			if (a[j] > a[j + 1]) {//逆序
				swap(a[j], a[j + 1]);
			}
		}
	}
}
void selectsort(int *a, int n) {
	for (int i = 0; i < n; i++) {//一共进行n趟扫描
		int k=i;	//记录待排序部分的第一个位置
		for (int j = i+1; j < n; j++) {	//通过比较后面与第一个的大小,找出最小的元素
			if (a[j] < a[k]) {
				k = j;
			}
		}
		swap(a[k], a[i]);//把最小的元素放到第一位
	}
}
void sertsort(int *a,int n) {
	for (int i = 1; i < n; i++) { //a[0]一个元素天然有序,所以待排序部分n-1,故需要n-1次扫描
		int j = i, temp = a[i];			//记录待排序部分第一个元素下标和值
		while (j>=1 && temp < a[j - 1]) {	//从后往前枚举已有序的部分来确定插入位置,只要temp小于前一个元素a[j-1]
			a[j] = a[j - 1]; //把a[j-1]往后移一位至a[j]
			j--;
		}
		a[j] = temp; //插入位置为j
	}
}
int main() {
	int a[] = {1,2,3,4,5,6,7,8,9,0,10,11,13,12};
	int n = sizeof(a) / sizeof(int);
	//bubblesort(a, n);
	selectsort(a, n);
	//sertsort(a, n);
	for (int i = 0; i < n; i++) {
		cout << a[i] << " ";
	}
	cout << endl;
	return 0;
}