[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fmAq0SFLssYKohl3rhHvn-uuaZfchmA56t9hGoTFjzvY":3},{"answer":4,"createTime":5,"id":6,"options":7,"origin":12,"question":19,"related":20,"source":30,"type":31},[],"2025-03-14 10:38:36",179124889,[8,9,10,11],"随机选择一个元素作为划分基准","取子序列的第一个元素作为划分基准","用中位数的中位数方法寻找划分基准","以上皆可行.但不同方法,算法复杂度上界可能不同",{"count":13,"courseId":14,"courseImg":15,"courseName":16,"workId":17,"workName":18},15,"90afc8e44ffa6a3340387cb3e80f48ee","https:\u002F\u002Ftihai-oss-cloud.itihey.com\u002Fimg\u002F9c1e48361b00f3ee2086f4e259ed792b.jpg","算法设计与应用","work_41594880","第三章递归与分治策略测试题","在寻找n个元素中第k小元素问题中,如快速排序算法思想,运用分治算法对n个元素进行划分,如何选择划分基准?下面( )答案解释最合理",[21,32,41,50,53,62,71,80,89,98],{"answer":22,"createTime":5,"id":23,"options":24,"question":29,"source":30,"type":31},[],179124886,[25,26,27,28],"问题规模相同,问题性质相同","问题规模相同,问题性质不同","问题规模不同,问题性质相同","问题规模不同,问题性质不同","分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解.这要求原问题和子问题( )","v1",0,{"answer":33,"createTime":5,"id":34,"options":35,"question":40,"source":30,"type":31},[],179124887,[36,37,38,39],"O(n)","O(logn)","O(n^2)","O(nlogn)","二分搜索算法所需的计算时间为()",{"answer":42,"createTime":5,"id":43,"options":44,"question":49,"source":30,"type":31},[],179124888,[45,46,47,48],"该问题的规模缩小到一定的程度就可以容易地解决","该问题可以分解为若干个规模较小的相同问题","利用该问题分解出的子问题的解可以合并为该问题的解","该问题所分解出的各个子问题相互独立","分治法所能解决的问题应具有的关键特征是()",{"answer":51,"createTime":5,"id":6,"options":52,"question":19,"source":30,"type":31},[],[8,9,10,11],{"answer":54,"createTime":5,"id":55,"options":56,"question":61,"source":30,"type":31},[],179124890,[57,58,59,60],"T(n)= T(n-1)+1,T(1)=1","T(n)= 2n2","T(n)= T(n\u002F2)+1, T(1)=1","T(n)=3nlog2n","T(n)表示当输入规模为n时的算法效率,以下算法效率最优的是( )",{"answer":63,"createTime":5,"id":64,"options":65,"question":70,"source":30,"type":31},[],179124891,[66,67,68,69],"int binarySearch(int a[], int n, int x){ int low=0, high=n-1;while(low&lt;=high){ int mid=(low+high)\u002F2;if(x==a[mid]) return mid;if(x&gt;a[mid]) low=mid;else high=mid;}return &ndash;1;}","int binarySearch(int a[], int n, int x){ int low=0, high=n-1;while(low+1!=high){ int mid=(low+high)\u002F2;if(x&gt;=a[mid]) low=mid;else high=mid;}if(x==a[low]) return low;else return &ndash;1;}","int binarySearch (int a[], int n, int x){ int low=0, high=n-1;while(low","int binarySearch(int a[], int n, int x){ if(n &gt; 0 &amp;&amp; x &gt;= a[0]){ int low = 0, high = n-1;while(low &lt; high){ int mid=(low+high+1)\u002F2;if(x &lt; a[mid])high=mid-1;else low=mid;}if(x==a[low]) return low;}return &ndash;1;}","对于下列二分查找算法,以下正确的是( )",{"answer":72,"createTime":5,"id":73,"options":74,"question":79,"source":30,"type":31},[],179124892,[75,76,77,78],"子问题必须是一样的","子问题不能够重复","子问题的解可以合并","原问题和子问题使用相同的方法解","使用分治法求解不需要满足的条件是()",{"answer":81,"createTime":5,"id":82,"options":83,"question":88,"source":30,"type":31},[],179124893,[84,85,86,87],"void hanoi(int n, int C, int A, int B) { if (n &gt; 0) { hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); } }","void hanoi(int n, int A, int C, int B) { if (n &gt; 0) { hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); } }","void hanoi(int n, int A, int B, int C) { if (n &gt; 0) { hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); } }","void hanoi(int n, int C, int B, int A) { if (n &gt; 0) { hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); } }","Hanoi塔问题:要求将塔座A上的的所有n圆盘移到塔座B上,借助塔座C,并仍按同样顺序叠置.移动圆盘时遵守Hanoi塔问题的移动规则.由此设计出解Hanoi塔问题的递归算法正确的为",{"answer":90,"createTime":5,"id":91,"options":92,"question":97,"source":30,"type":31},[],179124894,[93,94,95,96],"4","3","2","6","给定12个球,其中一个球为次品.次品在外表上与正常球无区别,但重量有分别(可能偏重或偏轻).现在给一个天平,问:最少需要称几次才能将次品甄别出来",{"answer":99,"createTime":5,"id":100,"options":101,"question":104,"source":30,"type":31},[],179124895,[102,103,102,103],"\u002F3","\u002F2","在任何一个2k*2k的棋盘覆盖中,用到的L型骨牌个数恰好为( )"]