• 个人简介

    手撕栈结构

    —————我要玩三角洲

    #include<bits/stdc++.h>
    using namespace std;
    int stk[1000];
    int top;
    bool empty()
    {
    	return top;
    }
    int size()
    {
    	return top;
    } 
    void push(int a)
    {
    	stk[++top]=a;
    }
    void pop()
    {
    	top--;
    }
    int gettop()
    {
    	return stk[top];
    }
    int main()
    {
    	
    	return 0;
    } 
    

    手撕大佐

    —————我要玩三角洲

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e8;
    bool is_prime[N];
    void prime(int n)
    {
    	for(int i=2;i<=n;i++)
    	{
    		if(!is_prime[i])
    		{
    			for(int j=i;j<=n;j++)
    			{
    				is_prime[i*j]=1;
    			}
    		}
    	}
    }
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	return 0;
    }
    
    #include<bits/stdc++.h>
    using namespace std;
    int gcd(int a,int b)
    {
    	if(b==0) return a;
    	return gcd(b,a%b);
    } 
    int main()
    {
    	int a,b;
    	cin>>a>>b;
    	cout<<gcd(a,b);
    	return 0;
    } 
    

    归并排序

    #include<bits/stdc++.h>
    using namespace std;
    int arr[150001];//本体 
    int brr[150001];//空壳
    //合并 
    void Merge(int left,int mid,int right)
    {
    	int i=left,j=mid+1,k=left;//k是合并开始的位置
    	while(i<=mid&&j<=right)//两边都有元素的时候 
    	{
    		//比较左右大小,小的放到空壳里
    		if(arr[i]<=arr[j])
    		{
    			brr[k++]=arr[i++];
    		} 
    		else
    		{
    			brr[k++]=arr[j++];
    		} 
    	} 
    	//只剩左边
    	while(i<=mid) brr[k++]=arr[i++];
    	//只剩右边 
    	while(j<=right) brr[k++]=arr[j++];
    	//放回本体 
    	for(int i=left;i<=right;i++)
    	{
    		arr[i]=brr[i];
    	}
    }
    //分割 
    void Merge_sort(int left,int right)
    {
    	//出口
    	if(left==right) return ;
    	//计算中间下标
    	int mid=(right+left)/2;
    	//对左进行分割 
    	Merge_sort(left,mid);
    	//对右进行分割
    	Merge_sort(mid+1,right);
    	//调用合并函数
    	Merge(left,mid,right);
    }
    int main()
    {
    	int n;
    	cin>>n;
    	//输入 
    	for(int i=1;i<=n;i++)
    	{
    		cin>>arr[i];
    	}
    	//归并排序
    	Merge_sort(1,n);
    	//输出 
    	for(int i=1;i<=n;i++)
    	{
    		cout<<arr[i]<<" ";
    	}
    	return 0;
    }
    

    快速幂

    ———————————迭代版

    #include<bits/stdc++.h>
    using namespace std;
    int main() 
    {
    	long long a,b;
    	long long ans=1;
    	cin>>a>>b;
    	while(b)
    	{
    		//奇数 
    		if(b%2)
    		{
    			ans=(ans%1000)*(a%1000);//拿出一个底数 
    		}
    		a=(a*a)%1000; //底数的平方 
    		b=b/2;
    	
    	}
    	cout<<ans%1000;
    	return 0;
    }
    

    ———————————递归版

    #include<bits/stdc++.h>
    using namespace std;
    int fast_pow(long long a,long long b)
    {
    	if(b==0) return 1;
    	long long half=fast_pow(a,b/2);
    	if(b%2)
    	{
    		return ((half%1000)*(half%1000)*(a%1000))%1000;
    	}
    	else
    	{
    		return ((half%1000)*(half%1000))%1000;
    	}
    } 
    int main() 
    {
    	long long a,b;
    	cin>>a>>b;
    	cout<<fast_pow(a,b);
    	return 0;
    }
    

    快速排序

    #include<bits/stdc++.h>
    using namespace std;
    void fast_sort(int arr[],int i,int j)
    {
    	int left=i,right=j;
    	int mid=left+(right-left)/2;
    	int base=arr[mid];
    	while(left<=right)
    	{
    		while(arr[left]<base) left++;
    		while(arr[right]>base) right--;
    		if(left<=right)
    		{
    			swap(arr[left],arr[right]);
    			left++;
    			right--;
    		}
    	}
    	if(i<right)fast_sort(arr,i,right);
    	if(left<j)fast_sort(arr,left,j);
    } 
    int main()
    {
    	int n;
    	cin>>n;
    	int arr[n+1];
    	for(int i=1;i<=n;i++)
    	{
    		cin>>arr[i];
    	}
    	fast_sort(arr,1,n);
    	for(int i=1;i<=n;i++)
    	{
    		cout<<arr[i]<<" ";
    	}
    	return 0;
    } 
    

    降序排序

    #include<bits/stdc++.h>
    using namespace std;
    int cmp(int a,int b)
    {
    	return a>b;
    }
    int main()
    {
    	int n;
    	cin>>n;
    	int arr[n+1];
    	for(int i=1;i<=n;i++) cin>>arr[i];
    	sort(arr+1,arr+n+1,cmp);
    	for(int i=1;i<=n;i++) cout<<arr[i]<<" ";
    	return 0;
    }
    
  • 最近活动