關於C++中vector使用sort方法進行排序:
第一種情形:基本類型,如vector,vector,vector直接使用;
第二種情形:用自定義的結構體進行sort算法,這時候需要自己定義個比較函數,因爲sort算法是基於容器中的元素是可以兩兩比較的,然後從小到大排序,所以要自定義怎麼樣纔是小於(’<’);
例如:
struct student
{
char name[10];
int score;
};
//自定義“小於”
bool compare(const student &a, const student &b)
{
return a.score < b.score;
}
sort(vectorStudents.begin(),vectorStudents.end(),comp);
最簡單二分法查找法:
int main()
{
std::vector<int> vecNumber = { 0,1,4,5,8,12,45,65,23,78,56,79,89};
sort(vecNumber.begin(), vecNumber.end());
int nTarget,nTime = 0;
bool bFind = false;
cout << "請輸入需要查找的值:" << endl;
cin >> nTarget;
auto nBegin = vecNumber.begin();
auto nEnd = vecNumber.end();
auto mid = nBegin + (nEnd - nBegin) / 2;
while (mid != nEnd)
{
if (*mid == nTarget)
{
bFind = true;
break;
}
else if(nTarget > *mid)
{
nBegin = mid + 1;
}
else
{
nEnd = mid;
}
nTime++;
mid = nBegin + (nEnd - nBegin) / 2;
}
if (bFind)
{
cout << "二分法找到目標,共用次數爲" << nTime << "次!" << endl;
}
else
{
cout << "目標不存在,共用次數爲" << nTime << "次!" << endl;
}
return 0;
}