Interview - mergesort

来源:互联网 发布:石家庄那里淘宝拍图好 编辑:程序博客网 时间:2024/06/16 11:38
  1. Merging with smaller auxiliary array. Suppose that the subarray a[0] to a[n−1] is sorted and the subarray a[n] to a[2∗n−1] is sorted. How can you merge the two subarrays so that a[0] to a[2∗n−1] is sorted using an auxiliary array of length n (instead of 2n)?
    描述: 使用n而不是2n的额外存储空间来对数列的两个子数列进行归并。
    解答: 设辅助数组为aux[], 将a[]的前半个子数列拷贝到aux[],然后根据aux[i](i从0开始)和a[j](j从n开始)的大小关系往a[k](k从0开始)里面放置相应元素。

  2. Counting inversions. An inversion in an array a[] is a pair of entries a[i] and a[j] such that i < j but a[i]>a[j]. Given an array, design a linearithmic algorithm to count the number of inversions.
    描述: 计算数列中的逆序对的个数,要求算法的复杂度是线性对数的。
    解答: 事实上数列里面逆序对的个数就等于排序里面需要执行交换操作的次数。使用递归的思想,先求出左边子数列的逆序数,再求出右边子数列的逆序数,加上左右两边因为分开元素产生的逆序数,就得到了总的逆序数。主要是针对归并排序作修改,在merge方法里面加入逆序数count的操作,count += 此轮判定的逆序数。

  3. Shuffling a linked list. Given a singly-linked list containing n items, rearrange the items uniformly at random. Your algorithm should consume a logarithmic (or constant) amount of extra memory and run in time proportional to nlogn in the worst case.
    描述: 对一个链表进行随机化操作。
    解答: 看stackoverflow吧,这个我也比较迷糊。stackoverflow

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被忽视型幼儿该怎么办 言语发育障碍脑神经损伤怎么办 5岁幼儿胆子小怎么办 幼儿20天胆子小怎么办 两岁宝宝胆子小怎么办 两岁的宝宝胆子小怎么办 孕中期发烧38度怎么办 小班社会交往教案有垃圾怎么办 两个月婴幼儿哭闹入睡难怎么办 8岁儿童睡觉困难怎么办 做精细动作手抖怎么办 15个月宝宝缺锌怎么办 八个月宝宝有蛔虫怎么办 两个月婴儿缺锌怎么办 婴儿天热出汗多尿少怎么办 婴儿5个月不主动抓东西怎么办 打疫苗吃了辣怎么办 四个月宝宝枕秃怎么办 四个月的孩子缺钙怎么办 小孩张牙齿会发烧怎么办 对节白蜡叶子干了怎么办 刷机字库坏了怎么办 魅蓝返回键失灵怎么办 牙蛀严重且牙根松动怎么办 蛀牙伤到神经了怎么办 给客户发错邮件怎么办外贸 cf没有枪声和脚步声怎么办 穿越火线fps太低怎么办 win10玩cf没有声音怎么办 儿子死了欠的钱怎么办 儿子欠银行的钱怎么办 惹了社会上的混混怎么办 我是五年级惹上混混怎么办 孩子挨欺负家长怎么办幼儿园 孩子被同学欺负不敢上学怎么办 孩子被欺负不敢还手怎么办 2个月的婴儿内热怎么办 孩子把别人打了怎么办 学生在学校被打怎么办 妈和老丈人搞外遇怎么办? 丈人住在双方出资房中怎么办