涉及有关c++知识
头文件:#include<vector>
一 初始化 (1) vector<int> a(10); //定义了10个整型int元素的向量,没有给初始值。 (2)vector<int> a(10,1); //定义了10个整型int元素的向量,且设置每个元素初始值为1。 (3)vector<int> a(b); //用b数组值来创建a向量,整体复制性赋值
二 常用操作
a.size(); //返回a中元素的个数
a[i]; //返回a的第i个元素
a.front(); //返回a的第一个元素
a.back(); //返回a的最后一个元素
二分思想:
不断二分二分查找,时间复杂度为log2(n)
#include<bits/stdc++.h>
#include<vector>
#include<iostream>
using namespace std;
//在数组a中查找目标值target的位置,并返回int
int binarysearch(vector<int>&a,int l,int r,int target)
{
int mid=(l+r)/2;
if(l>r) return -1; //越界
if(a[mid]==target) return mid; //查找完毕,返回位置mid
if(a[mid]>target) binarysearch(a,l,mid-1,target); //调用递归查找目标位置
if(a[mid]<target) binarysearch(a,mid+1,r,target);
}
int main()
{
vector<int> a{1,2,3,4,5,6,7,8,9};
int tar; //所需查找值
while(~scanf("%d",&tar))
{
printf("%d\n",binarysearch(a,0,a.size()-1,tar));
}
return 0;
}
快排的c++写法
struct node
{
int x,y,w;
} edge[2005];
bool cmp(node a,node b)
{
return a.w<b.w; //从小到大排列,升序
}
int main()
{
sort(edge+0,edge+m,cmp);
}