摘要: 一般来说,我们可以用异或运算来交换两个整数,这样可以避免在交换的过程中用到临时变量。(其实用到一个临时变量也不影响程序性能,所以此处无非是编程技巧的考察了。)代码可以这样写:1 void2 Swap(int *a, int *b)3 {4 5 *a ^= *b;6 *b ^=... 阅读全文
posted @ 2014-10-31 15:20 nipan 阅读(2464) 评论(0) 推荐(0) 编辑
摘要: 如果要我们找出一个数组中的最小(最大)的元素,那么第一反应肯定是使用最小(最大)堆。时间复杂度等同于建堆的复杂度,这里是O(N)。如果要我们找出一个数组中的第k个最小的元素,那么我们依然可以使用最小堆,删除掉k次的最小值,就得到了结果。复杂度是O(N + klogN)。如果要我们找出一个数组的中值,... 阅读全文
posted @ 2014-10-31 14:35 nipan 阅读(282) 评论(0) 推荐(0) 编辑