目录
板块一:用C语言中的排序API排序
int compare(const void*a,const void*b)//比较函数
{
int cmpa=*(int*)a;
int cmpb=*(int*)b;
return cmpa>cmpb?1:-1;
}
int * sort(int *nums,int numsSize)
{
qsort(nums,numsSize,sizeof(int),compare);
return nums;//返回一个排序后的数组
}
排序还可以用sort直接进行排序
板块二:二分查找
bool binFind(vector<int>©,int l,int r,int val)//输入数组、左界、右界,还有要查找的数
{
while(l<=r)
{
int mid=(l+r)>>1;
if(val==copy[mid])
{
return true;
}
else if(val>copy[mid])
{
l=mid+1;
}
else
{
r=mid-1;
}
}
return false;
}
板块三:线性查找
int linearFind(vector<int>&nums,int l,int r,int val)//线性查找
{
for(int i=l;i<=r;i++)
{
if(nums[i]==val)
{
return i;//返回对应值的下标
}
}
return -1;
}
板块四:数字逆转(舍0版)
int reverse(int num)
{
int k=0;
while(num!=0)
{
k=k*10+num%10;
num=num/10;
}
return k;
}
板块五:将一个数倒序的函数
int resever(int x)
{
int y=0;
while(x)
{
y=y*10+x%10;
x=x/10;
}
return y;
}
板块六:求是几位数的函数
int length(int x)
{
int length=0;
while(x)
{
length++;
x/=10;
}
return length;
}
板块七:求最小公倍数
法一
int lcm(int a, int b)
{
return (a * b) / gcd(a, b);
}
法二
int gys(int a,int b)
{
m=max(a,b);
n=min(a,b);
while(n!=0)
{
int r=m%n;
m=n;
n=r;
}
return a*b/m;
}
板块八:求最大公约数
法一
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
法二
int gys(int a,int b)
{
m=max(a,b);
n=min(a,b);
while(n!=0)
{
int r=m%n;
m=n;
n=r;
}
return m;
}
板块九:判断闰年
int panduan(int a)
{
if(a>0&&a<3000)
{
if(a%400==0||(a%4==0&&a%100!=0))
{
return 1;
}
else
{
return 0;
}
}
return 0;
}
板块十:二进制数转成十进制
//二进制数转成十进制
int zhuanhuan(int x)
{
int result=0,p=1;
while(x)
{
result+=x%10*p;
p*=2;
x/=10;
}
return result;
}