当前位置: 首页 > 面试题库 >

请你说一说洗牌问题的思路并手写代码,并设计测试用例

司马英才
2023-03-14
本文向大家介绍请你说一说洗牌问题的思路并手写代码,并设计测试用例相关面试题,主要包含被问及请你说一说洗牌问题的思路并手写代码,并设计测试用例时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

洗牌问题:有个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后{a1,b1,a2,b2,….,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法。

void PerfectShuffle(int *A,int n){
if(n <= 1){
return;
}//if
//
int size = 2*n;
int index,count;
for(int i = n;i < size;++i){

// 交换个数

count = n - (i - n) - 1;

// 待交换

index = i;
for(int j = 1;j <= count;++j){
swap(A[index],A[i-j]);
index = i - j;
}//for
}//for
}
};

可以就数组的类型,可以是int型的,浮点型的,还可以是大数类型,负数,进行测试。

 类似资料:
  • 本文向大家介绍请你说一说快速排序,并手写代码相关面试题,主要包含被问及请你说一说快速排序,并手写代码时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 2、快速排序的三个步骤: (1)选择基准:在

  • 本文向大家介绍请你说一说洗牌算法?相关面试题,主要包含被问及请你说一说洗牌算法?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 考察点: 公司:腾讯 1、Fisher-Yates Shuffle算法 最早提出这个洗牌方法的是 Ronald A. Fisher 和 Frank Yates,即 Fisher–Yates Shuffle,其基本思想就是从原始数组中随机取一个之前没取过的数字到新的

  • 本文向大家介绍请使用js实现商品的sku,并说说你的思路相关面试题,主要包含被问及请使用js实现商品的sku,并说说你的思路时的应答技巧和注意事项,需要的朋友参考一下 reduce 依次叠加组合

  • 本文向大家介绍请你说一下设计测试用例的方法相关面试题,主要包含被问及请你说一下设计测试用例的方法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 黑盒测试: 1.等价类划分 等价类划分是将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类,设计测试用例的时候要考虑这两种等价类。 2.边界值分析法 边界值分析法是对等价类划分的一种补充,

  • 本文向大家介绍请你说一说并发(concurrency)和并行(parallelism)相关面试题,主要包含被问及请你说一说并发(concurrency)和并行(parallelism)时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 并发(concurrency):指宏观上看起来两个程序在同时运行,比如说在单核cpu上的多任务。但是从微观上看两个程序的指令是交织着运行的,你的指令之间穿插着我

  • 本文向大家介绍请你说一说测试用例的边界相关面试题,主要包含被问及请你说一说测试用例的边界时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。 常见的边界值 1)对16-bit 的整数而言 32767 和 -32768 是边界 2)屏幕上光标在最左上