这是个人做题常用的程序,希望能对大家有点帮助
#include<bits/stdc++.h>
using namespace std;
void quick_sort(int s[],int left,int right)//快排
{
if(left<right)
{
int i=left,j=right,x = s[left];
while(i<j)
{
while(i<j&&s[j]>=x)j--;
if(i<j)
s[i++] = s[j];
while(i<j&&s[i]<x)i++;
if(i<j)
s[j--] = s[i];
}
s[i] = x;
quick_sort(s,left,i-1);
quick_sort(s,i+1,right);
}
}
bool check(int a)//最简单的判断质数判断一个数比较适合,时间复杂度在其上有埃氏筛,欧拉筛
{
for(int i=2;i*i<=a;i++)//sqrt返回的是一个double直接用i*i一样的效果
{
if(a%i==0) return false;
}
return true;
}
int g(int x,int y)
{
return y==0?x:g(y,x%y);
}
int f(int x)//闰年
{
return x%4==0&&x%100!=0||x%400==0;
}
int fast(int n,int j)//快速幂
{
int result = 1;
while(j)
{
if(j&1){result = result*n;}
j>>=1;
n*=n;
}
return result;
}
int two(int a[],int n,int length)//二分查找
{
int left=0,rigth=length;
while(left<=rigth)
{
int mid=(left+rigth)/2;
if(n==a[mid]) return mid;
else if(n<a[mid]) rigth = mid-1;
else left = mid+1;
}
return -1;
}
int shai()//欧拉筛
{
const int maxx = 10000;
int prime[maxx];
bool vis[maxx];
int cnt = 0;
for (int i = 2; i <= maxx; i++)
{
if (vis[i] == false)
prime[++cnt] = i;
for (int j = 1; j <= cnt && i * prime[j] <= maxx; j++)
{
vis[i * prime[j]] = true;
if (i % prime[j] == 0)
break;
}
}
cout<<prime[15];
return 0;
}
int main()
{
int a[5]={1,3,2,10,9};
quick_sort(a,0,4);
cout<<god_(15,13)<<endl;
cout<<f(2100)<<endl;
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
return 0;
}