1. 冒泡排序
#include <iostream>
using namespace std;
int main()
{
int n,a[1000];//个数及数组
cin >> n;
for (int i = 0; i < n; i++){
cin >>a[i];
}
for (int i =0; i < n-1;i++){
for (int j=1;j<n-i;j++){
if (a[j-1] > a[j]){
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
for (int i=0; i<n; i++){
cout<<a[i]<<endl;
}
return 0;
}
2. 奇偶排序
#include <iostream>
using namespace std;
int main(){
//输入
int a[10];
for (int i = 0; i < 10; i++){
cin >> a[i];
}
//排序
int l = 0, r = 9;
while (l <= r) {
bool leftisOdd = a[l] % 2 == 1;
bool rightisEven = a[r] % 2 == 0;
if(leftisOdd){
l++;
} else if (rightisEven) {
r--;
} else if (!leftisOdd && !rightisEven) {
int temp = a[l];
a[l] = a[r];
a[r] = temp;
}
}
// 左边冒泡
int start = 0, end = l;
for (int i = start; i < end -1; i++){
for (int j = start + 1; j < start + end - i; j++){
if (a[j-1] > a[j]) {
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
// turns to right
start = l, end = 10;
for (int i = start; i < end -1; i++){
for (int j = start + 1; j < start + end - i; j++){
if (a[j-1] > a[j]) {
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
for (int i=0; i<10; i++){
cout<<a[i]<<' ';
}
return 0;
}
3.堆排序
//堆排序主函数
void HeapSort(int a[], int n){
for(int i= n/2-1;i>=0;i--)
MaxHeapFixDown(a,i,n);
for(int i=n-1;i>=1;i--){
swap(a[i],a[0]);
MaxHeapFixDown(a,0,i);
}
}
//构造最小堆(降序)
void MaxHeapFixDown(int a[], int i, int n){
int j = 2*i+1;
int temp = a[i];
while(j<n){
if(j+1<n&&a[j]>a[j+1])
++j;
if(temp<a[j])
break;
else{
a[i]=a[j];
i=j;
j=2*i+1;
}
}
a[i]=temp;
}
void MaxHeapFixDown2(int a[], int i, int n){
int j = 2*i+1;
int temp = a[i];
while(j<n){
if(j+1<n&&a[j]<a[j+1])
++j;
if(temp>a[j])
break;
else{
a[i]=a[j];
i=j;
j=2*i+1;
}
}
a[i]=temp;
}
void MaxHeapFixDown3(int a[], int i, int n){
int j = 2*i+1;
int temp = a[i];
while(j<n){
if(j+1<n&&a[j]<a[j+1]){
swap(a[j],a[j+1]);
}
if(temp>a[j])
break;
else{
a[i]=a[j];
i=j;
j=2*i+1;
}
}
a[i]=temp;
}
3. 斐波那契
function<int(int)> fib = [&fib](int) {return n<=2 ? 1:fib(n-1)+fib(n-2);};
cout << fib(4) << endl;
function <int(int)> 表示返回值为int,有一个int参数的函数。