C卷,100分)- 小明找位置
题目描述
小朋友出操,按学号从小到大排成一列;
小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。
算法复杂度要求不高于nLog(n);学号为整数类型,队列规模 ≤ 10000;
输入描述
第一行:输入已排成队列的小朋友的学号(正整数),以","隔开;例如:
93,95,97,100,102,123,155
第二行:小明学号,如:
110
输出描述
输出一个数字,代表队列位置(从1开始)。例如:
6
用例
输入 93,95,97,100,102,123,155
110
输出 6
说明 无
题目解析
本题应该不会存在重复学号问题,因此本题其实就是在一个有序数组中寻找目标值的有序插入位置,可以使用二分法。
#include <stdio.h>
#include <stdlib.h>
int getResult(int* num,int size,int n){
int l=0;
int r=size-1;
while(l<=r){
int mid=(l+r)/2;
if(num[mid]>n){
r=mid-1;
}
else if(num[mid]<n){
l=mid+1;
}
else{
return mid;
}
}
return l;
}
int main(){
int num