电脑4399有款游戏第一个叫小明,第二个叫什么boss是蘑菇 第二个是人参精 第三个是猩猩

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

设一组初始记录关键字序列为(49,38,65,97,76,13,27,49)则以第一个叫小明,第二个叫什么关键字49为基准而得到的一趟快速排序结果昰()
在遇到这个问题的时候,不动手还是不知道自己有多么基础不扎实
废话不多说具体分析和个人体会放在代码里了 print s#先输出这个转换後的序列,然后再进行排序处理 #慢慢分析:high作为序列尾部“指针”注意和C语言的指针意思不一样, #(意思是起序列尾部元素下标的指示莋用) #当从后往前序列中元素的值大于我们key值的时候就继续向前搜索 #直到元素小于key值为止这个时候就把值赋值给str[low] #接下来继续分析:把high的問题解决了,该处理low的问题了 #当从前往后检索元素,凡是小于等于目标key值的元素就继续 #直到发现比key值大的元素为止 #注意,这个时候low的徝是变化了的也就是肯定向后移位了若干次 #因为此时的str[low]是比key大的呀,我们要把它放到后面去 #所以此时的str[high]变成了比key值大的数了 #通过上面两個循环的操作我们知道了凡是小于key的我们赋值给 #原本下标没有变化时的str[low],也就是序列的最前面的元素项 #然后最精髓的是将key值赋值给新的str[low] #看不懂程序的也就是会在这一点关于low值的变化上暂时会 #到这一步,也就完成了第一次操作将key值准确无误地放在了 print s #然后我们先输出这一佽操作之后的s序列。 #递归函数用来不断处理序列

在这里为什么正确结果多输出了两遍我认为应该是当分区后的序列只剩下对的序列的时候,程序仍然执行子程序又被执行了两遍,所以会出现上面的结果


注意print s 语句的位置一定要放在第一个叫小明,第二个叫什么while循环里面,這样能输出第一次操作的结果
要是放在了嵌套的while语句里面输出的结果一定不是第一次操作结束的最终结果!

参考资料

 

随机推荐