NewCoder(牛客)题集--Four
解:错
解析:二分查找针对的是有序表。
A.O(N*log(N))
B.O(N)
C.O(log(N))
D.O(N^2)
解:C
解析:二分法每次比较会去掉一半的数据,也就是说比较次数为n,数据为m个则2^n>=m,m=log(N),时间复杂度为O(log(N))
解:4
解析:
A.选择排序
B.快速排序
C.归并排序
D.希尔排序
解:C
解析:不稳定排序:一堆希尔快选
解:正确
解析: 最外层的 { ... } 会初始化 a[] 即第一维。而 {1} 会初始化 a[0][] 由于只有一个元素,后续元素会默认置 0 。其他同理。
解:20, 70, 30, 50
解析:10个数首先和中间值20比较,58比20***择右边,右边5个数选择中间值70,58比70小,选择左边,左边两个数中间值30进行比较,58比30***择右边,右边一个数50,58比50大,没有找到
解:3
解析:
基数排序分配和回收的趟数只与元素长度有关。
基数排序是通过“分配”和“收集”过程来实现排序。
1)首先根据个位数值(只看个位)来排序:
253 674 924 345 627
2)再看十位(只看十位数值大小)来排序:
924 627 345 253 674
3)最后看百位:
253 345 627 674 924
所以最后的结果排序为 253 345 627 674 924,需要3趟。
解:s+1,len-2
解析:*s指向字符串的第一个,一次操作后将字符串首尾两个字符交换。一次交换后*s指向下一个字符,同时待处理字符串长度减2
解:出错
解析:char *p1="123" 声明了个字符串指针p1,指向字符串“ 123 ”,此时的“ 123 ”存放在常量区,并没有在拷贝到栈中,所以不能修改,如修改p1[0] = '2'就是错误的。
解:9
解析:第一次分组8个分成4组 两两一组 比4次 第二次分组为上面比较下来的4个还是两两分组 分2组 第三次分组就剩下两个直接比较出了最大 这时一共比较了4+2+1=7次 接着拿第三次分组中与最大比较的那个数分别和 之前与最大那个数比较过的数比较 分别是第一次分组有一个 第二次分组有一个 7+2=9