c++数据结构竞赛 -常见排序(没有归并和快速排序) #includeiostream #includevector using namespace std; void fun1(vectorint a)//插入排序 { if (a.size() 1) return; for (int i 1; i a.size(); i) { int key a[i]; int j i - 1; while (j 0 and a[j] key) { a[j 1] a[j]; j--; } a[j 1] key; } } void fun2(vectorint a)//选择排序 { for (int i 0; i a.size(); i) { int pos i; for (int j i 1; j a.size(); j) { if (a[j] a[pos]) pos j; } swap(a[i], a[pos]); } } void fun3(vectorint a)//冒泡排序常规版本 { for (int i a.size() - 1; i 0; i--) { for (int j 0; j i; j) { if (a[j] a[j 1]) swap(a[j], a[j 1]); } } } void fun4(vectorint a)//堆排序 { for (int i a.size() / 2; i 1; i--) down(i,n); for (int i a.size(); i 1; i--) { swap(a[1], a[i]); down(1, i - 1); } } int main1() { vectorint run; int n; cin n; while (n--) { int k; cin k; run.push_back(k); } fun4(run); cout 排序后; for (int e : run) { cout e ; } return 0; }