目录
要求代码复杂度时间复杂度空间复杂度
稳定性分析
要求
将数值数组按从小到大排序。
代码
public class Quick {
public static void sort(Comparable
[] a
) {
int lo
= 0;
int hi
= a
.length
- 1;
quicksort(a
, lo
, hi
);
}
private static void quicksort(Comparable
[] a
, int lo
, int hi
) {
if (lo
>= hi
) return;
Comparable key
= a
[lo
];
int left
= lo
;
int right
= hi
;
while(left
< right
){
while(less(key
,a
[right
]) && left
< right
){
right
--;
}
while (less(a
[left
],key
) && left
< right
){
left
++;
}
exch(a
,left
,right
);
}
exch(a
, lo
, left
);
quicksort(a
, lo
, left
- 1);
quicksort(a
, left
+ 1, hi
);
}
private static boolean less(Comparable v
, Comparable w
) {
return v
.compareTo(w
) <= 0;
}
private static void exch(Comparable
[] a
, int i
, int j
) {
Comparable t
= a
[i
];
a
[i
] = a
[j
];
a
[j
] = t
;
}
}
public class Test {
public static void main(String
[] args
) throws Exception
{
Integer
[] arr
= {8,6,1,2,7,40,8,56,21,88};
Quick
.sort(arr
);
System
.out
.println(Arrays
.toString(arr
));
}
}
[1, 2, 6, 7, 8, 8, 21, 40, 56, 88]
复杂度
时间复杂度
最好情况O(nlogn),最坏情况O(n^2),平均O(nlogn)
空间复杂度
O(logn)
稳定性分析
不稳定
转载请注明原文地址: https://lol.8miu.com/read-34429.html