快速排序 ,O(nLogn);X选择问题,O(n);
思路:任意找一个下标i(使这个数是随机的),从目标数组a[]的头尾,同时发起比较操作;比较到中间时,将a[i]放在中间位置,则这个a[i]将整个a[]被分成两个分组,一边不大于a[i],一边不小于a[i]。然后递归处理这两个分组.......,直到递归出口。
X选择问题,只会处理其中的一个分组(注意,不一定是一半),所以时间会快。
快速排序 ,O(nLogn);X选择问题,O(n);
思路:任意找一个下标i(使这个数是随机的),从目标数组a[]的头尾,同时发起比较操作;比较到中间时,将a[i]放在中间位置,则这个a[i]将整个a[]被分成两个分组,一边不大于a[i],一边不小于a[i]。然后递归处理这两个分组.......,直到递归出口。
X选择问题,只会处理其中的一个分组(注意,不一定是一半),所以时间会快。