时间复杂度:
O(n*log2n)
算法稳定性:
不稳定
原理:
1:首先在数组中选取一个参照点 T。(参照点的选择好坏直接影响效率)
2:将数组调整为 T 左边所有点Tl小于 T, T 右边所有点Tr 大于等于T。
3:递归的对 Tl 和 Tr 执行 1,2,3步骤知道不能再分。
没有图!
注:本系列算法是用于记录自己学习算法阶段对每个算法的自己理解。
@Override
public int[] sort(int[] source) {
return changer(source, 0, source.length - 1);
}
public int[] changer(int[] source, int l, int r){
if (l >= r){
return source;
}
int temp = source[l];
int start = l;
int end = r;
while (l < r){
while (l < r && source[r] >= temp){
r--;
}
source[l] = source[r];
while (l < r && source[l] < temp){
l++;
}
source[r] = source[l];
}
source[l] = temp;
changer(source, start, l - 1);
changer(source, l + 1, end);
return source;
}