几种排序算法的代码表示
选择排序、二分查找法、斐波那契数列、矩阵加法、迭代求和、递归求和
#include <iostream>
using namespace std;
void selectSort(int *a,int n){
//选择排序
int min,temp;
for(int i=0;i<n-1;i++){
min=i;
for(int j=i+1;j<n;j++){
if(a[j]<a[i]){
min=j;
}
}
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
int binarySearch(int *a,int len,int arr_value){
//二分查找法
while (1){
int left=0;
int right=len-1;
while (left<=right){
int mid=(left+right)/2;
if (a[mid]==arr_value){
return mid;
} else if(a[mid]<arr_value){
right=mid-1;
}
else if(a[mid]>arr_value){
left=mid+1;
}
}
return -1;
}
}
int fact(int n){
//阶乘
if(n==0) return 1;
else return n*fact(n-1);
}
int fibonacci(int n){
//斐波那契数列
if(n<=1){
return 1;
}
else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
int fibIter(int n){
//斐波那契数列(迭代)
int f0=1,f1=1;
int f2;
for(int i=2;i<=n;i++){
f2=f0+f1;
f0=f1;
f1=f2;
}
return f1;
}
void addm(int a[][2],
int b[][2],
int c[][2],
int rows,int cols){
//矩阵加法
int i,j;
for(i=0;i<rows;i++){
for (j = 0; j< cols; j++) {
c[i][j]=a[i][j]+b[i][j];
}
}
}
float sumn(float list[],int n){
//迭代求和
float tempsum=0;
int i;
for (i = 0; i <n ;i ++) {
tempsum+=list[i];
}
return tempsum;
}
float rsum(float list[],int n){
//递归求和
if (n){
return rsum(list,n-1)+list[n-1];
}
return 0;
}
int main() {
int a[]={6,5,4,3,2,1};
int n=sizeof(a)/sizeof(int);
// selectSort(a,n);
// for(int i=0;i<n;i++){
// cout<<a[i]<<" ";
// }
// int p=binarySearch(a,6,2);
// cout<<p;
// int f=3;
// int fac=fact(f);
// cout<<fac<<endl;
// int fib=2;
// int fibo=fibonacci(fib);
//
// cout<<fibo<<endl;
// int ff=3;
// int ff1=fibIter(ff);
// cout<<ff1<<endl;
// int a1[][2]={0,0,0,0};
// int b1[][2]={1,1,1,1};
// int c1[][2]={};
// addm(a1,b1,c1,2,2);
// for (int i = 0; i < 2; ++i) {
// for (int j = 0; j < 2; ++j) {
// cout<<c1[i][j]<<" ";
// }
// }
return 0;
}