原帖地址:http://bbs.sjtu.edu.cn/bbstcon?board=Algorithm&reid=1187310487
方法很巧妙。找一个标杆然后快排,快排后标杆把数组分成了两种,小于标杆的,大于标杆的,此外,标杆就恰好站在了它应该排列的位置上。
如果标杆的下标恰是第K个,那么显然标杆就是答案,若不是则:
若标杆下标大于K,就在标杆前面的部分找,反之,在标杆后面的部分找。
我戏称这种算法叫砍一刀算法,每次把数组都砍一刀变小。
原帖地址:http://bbs.sjtu.edu.cn/bbstcon?board=Algorithm&reid=1187310487
方法很巧妙。找一个标杆然后快排,快排后标杆把数组分成了两种,小于标杆的,大于标杆的,此外,标杆就恰好站在了它应该排列的位置上。
如果标杆的下标恰是第K个,那么显然标杆就是答案,若不是则:
若标杆下标大于K,就在标杆前面的部分找,反之,在标杆后面的部分找。
我戏称这种算法叫砍一刀算法,每次把数组都砍一刀变小。