设一组初始记录关键字序列为(49,38,65,97,76,13,27,49),则以第一个关键字49为基准而得到的一趟快速排序结果是()

A. 38,13,27,49,49,65,97,76
B. 13,27,38,49,65,76,97,49
C. 27,38,13,49,76,97,65,49
D. 27,38,13,49,97,76,65,49

这道题选C!

分析:
在遇到这个问题的时候,不动手还是不知道自己有多么基础不扎实
废话不多说,具体分析和个人体会放在代码里了

#-*-coding=UTF-8 -*-
#Quicksort Algorithm
s = raw_input().split(',')
s = map(int, s)#将序列s转换成数字序列。
print s#先输出这个转换后的序列,然后再进行排序处理
def Sort(str,low,high):
    key = str[low]#始终以序列第一个元素作为目标key值。
    while low < high:
        while (low < high) and (str[high] >= key):
            high -= 1
        str[low] = str[high]#慢慢分析:high作为序列尾部“指针”,注意和C语言的指针意思不一样,
        #(意思是起序列尾部元素下标的指示作用)
        #当从后往前序列中元素的值大于我们key值的时候就继续向前搜索
        #直到元素小于key值为止,这个时候就把值赋值给str[low]
        while (low < high) and (str[low] <= key):
            low += 1
        str[high] = str[low]#接下来继续分析:把high的问题解决了,该处理low的问题了,
        #当从前往后检索元素,凡是小于等于目标key值的元素就继续
        #直到发现比key值大的元素为止。
        #注意,这个时候low的值是变化了的,也就是肯定向后移位了若干次
        #我们然后在前提条件下(LOW < HIGH)
        # 将此时的str[low]赋值给str[high]
        #因为此时的str[low]是比key大的呀,我们要把它放到后面去
        #所以此时的str[high]变成了比key值大的数了
        str[low] = key#通过上面两个循环的操作,我们知道了凡是小于key的我们赋值给
        #原本下标没有变化时的str[low],也就是序列的最前面的元素项
        # 大于key值的我们赋值给str[high]
        #然后最精髓的是将key值赋值给新的str[low]
        #看不懂程序的也就是会在这一点,关于low值的变化上暂时会
        #想不明白
        #到这一步,也就完成了第一次操作,将key值准确无误地放在了
        #它应有的位置上。
    print s #然后我们先输出这一次操作之后的s序列。

    return low # 返回新的low值,为了下一次区分区间

def quick_sort(array,low,high):
     if low < high:
        key_index = Sort(array,low,high)quick_sort(array,low,key_index)quick_sort(array,key_index+1,high)#递归函数用来不断处理序列
if __name__ == '__main__':
    quick_sort(s,0,len(s)-1)

49,38,65,97,76,13,27,49
[49, 38, 65, 97, 76, 13, 27, 49]
[27, 38, 13, 49, 76, 97, 65, 49]
[13, 27, 38, 49, 76, 97, 65, 49]
[13, 27, 38, 49, 76, 97, 65, 49]
[13, 27, 38, 49, 76, 97, 65, 49]
[13, 27, 38, 49, 49, 65, 76, 97]
[13, 27, 38, 49, 49, 65, 76, 97]
[13, 27, 38, 49, 49, 65, 76, 97]

在这里为什么正确结果多输出了两遍,我认为应该是当分区后的序列只剩下对的序列的时候,程序仍然执行,子程序又被执行了两遍,所以会出现上面的结果。
注意print s 语句的位置一定要放在第一个while循环里面,这样能输出第一次操作的结果
要是放在了嵌套的while语句里面输出的结果一定不是第一次操作结束的最终结果!

4399游戏校招笔试题相关推荐

  1. 2018网易游戏校招笔试题

    2017年4月15日的网易游戏实习生校招题目,3道题,2小时,对于没有经过ACM训练的人来说时间挺紧,最后没做完.但是毕竟猪场挑高手,自己技不如人,还需要多多努力.回头自己整理了下自己做得题目.可能有 ...

  2. 数据分析真题日刷 | 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷

    今日真题 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷(来源:牛客网) 题型 客观题:单选5道,不定项选择10道 主观题:问答4道 完成时间 90分钟 牛客网评估难度系数 ...

  3. 网易互娱2020校招游戏研发笔试题

    网易互娱游戏研发笔试题 第一题:判断一个数的二进制是否为回文串(AC) 方法一:存成数组之后比较 #include<iostream> #include<algorithm> ...

  4. 百度2019校招笔试题

    百度2019校招笔试题 1. 探险安排 小明要为n个人计划一次火星的探险,其中一个重要的任务是为每个参与者安排食物.仓库里面有m个能用一天的食物包裹,每个食物包裹有不同的类型ai.每个人每天必须用且只 ...

  5. 九月十月 阿里 百度 华为 校招笔试题

    九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面 ...

  6. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  7. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个

    要求: 这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系. 思路:用一个while循环扫描整个字符串,用pStart字符指针指向整个字符串首地址,如果遇到首部 ...

  8. 小米运维部14年校招笔试题A的个人答案

    15年准备实习生面试时答的题,仅供参考 具体题目详见  http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...

  9. 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结

    剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...

最新文章

  1. 中国互联网+机器视觉行业商业模式创新与投资机会深度研究报告
  2. Python十段经典代码
  3. Bentley MicroStation V8i安装教程
  4. 解读综合布线12大热点技术趋势
  5. java string问题_Java关于String的问题?
  6. java加快内存回收_java内存管理之垃圾回收及JVM调优
  7. 计算机网络——码元,波特,速率和带宽
  8. ZZULIOJ 1158: 又是排序(指针专题)
  9. 【测试】模拟一个全表扫描的sql,对其进行优化走索引,并且将执行计划稳定到baseLine。...
  10. MySQL命令窗口出现中文乱码的解决方法
  11. 【重点】程序员面试金典——4.6寻找下一个结点
  12. 【BZOJ3924】[Zjoi2015]幻想乡战略游戏 动态树分治
  13. Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
  14. 接外包项目的几点技巧
  15. php 添加数据sql语句,PHP添加/修改/删除SQL语句
  16. endnote 参考文献加序号_求助endnote 中 文末的参考文献 序号中如何设置成带中括号的 [序号]...
  17. Flixel Dame 坦克大战(三)完成基本逻辑
  18. (附源码)springboot金融新闻信息服务系统 毕业设计651450
  19. 挂牌!迎来【济南网络空间安全山东省实验室】等三所实验室!
  20. Kubernetes1.3:QoS服务质量管理

热门文章

  1. Metasploaitable和侦察httrack-安全牛课堂网络安全之Web渗透测试练习记录
  2. 5G多卡聚合路由保障疫情数据监控系统网络稳定通畅
  3. “雪人计划“IPV6根服务器全球分布情况
  4. [医学影像基础] 脑部MRI影像
  5. matlab三相异步电动机,MATLAB中的三相异步电动机仿真.doc
  6. 计算机教学assure模型教案,ASSURE模型0ppt课件.ppt
  7. 2021年3月电子学会Python等级考试试卷(三级)考题解析
  8. 无人值守地磅防作弊就是在地磅周围加个摄像头吗?
  9. 双卡双待的手机会有两个IMEI号
  10. 【大唐杯备考】——5G系统勘察设计(学习笔记)