嗨,大家好,我需要快速排序: 90 8 7 56 123 235 9 1 653,作为枢轴90。我见过很多人这样做,而且我觉得每个人都以不同的方式来做。我知道如果它位于最后一个位置,该怎么做,如下:
http://www.geeksforgeeks.org/quick-sort/
但是如果刚开始的话会怎么样?另外,如果它在中间呢?
注意:没有代码,只有Nombers。
谢谢!
注意:这就是我所拥有的,但是我认为这是错误的,对吗?
653 8 7 56 123 235 9 1 90 (与最后交换)
653 8 7 56 123 235 9 1 90(arr [J] <=枢轴?否,所以J = 0并检查下一个索引)
8 653 7 56 123 235 9 1 90(交换)
8 7 653 56 123 235 9 1 90
8 7 56653 123 235 9 1 90
8 7 56 9 123 235 653 1 90
8 7 56 9 1 235 653 123 90
8 7 56 9 1 90653123235
8 7 56 9 1
最佳答案
初始数据:90 8 7 56 123 235 91 653
我们选择枢轴为90,左标记为9,右标记为653。90 8 7 56 123 235 91 653
P L R
我们增加左标记的索引,直到达到> 90的值。左侧标记设置为123。90 8 7 56 123 235 91 653
P L R
我们递减右标记的索引,直到达到<90的值。右侧标记设置为56。90 8 7 56 123 235 91 653
P R L
右标记和左标记相交,因此我们找到了一个分割点。我们将90与56交换。56 8 7 90 123 235 91 653
现在,我们将数据透视表90
定位在正确的位置,并以大小为1的分区的停止情况将快速排序递归应用于每个分区。56 8 7 90 123 235 91 653
P L R F P L R
(“F”表示该值固定在该索引位置)
这是有关quicksort的重要资源:http://interactivepython.org/runestone/static/pythonds/SortSearch/TheQuickSort.html
关于data-structures - 快速排序练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47562715/