题目 : Sort with Swap(0,*)
分值 : 25
难度 : 贪心题
思路 : 你用一个 list[value] = index 的数组反向记录下 每一个value所处的下标 index
然后每次都去取出 list[0] , 比如list[0] =7,你就和 list[7]交换以保证list[7]
中的数字是最终的数字,也就是list[7]=7.这样的解法会出现list[0]=2/ list[2]=0
这样就需要去遍历 整个list数组,找到一个还未是最终数字的list[i]和list[0]交换.
坑点 : 在碰到list[0]=0 去遍历数组时,如果你每次都是从头开始找,那么会超时.
优化方法:每次从上次寻找的下标开始找,因为上次找过的下标之前肯定已经都排好序了.
具体代码如下
1 |
|