原理:每次从无序序列选取最小的
复杂度:O(n^2) - O(n^2) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度]
public void selectSort(int[] a) {
if (null == a || a.length < 2) {
return;
}
for (int i = 0; i < a.length; i++) {
int k = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[k]) {
k = j;
}
}
if (k!=i) {
int temp = a[k];
a[k] = a[i];
a[i] = temp;
}
}
}
本文向大家介绍Java版堆排序[不稳定]相关面试题,主要包含被问及Java版堆排序[不稳定]时的应答技巧和注意事项,需要的朋友参考一下 堆一般指二叉堆。 复杂度:O(nlogn) - O(nlgn) - O(nlgn) - O(1)[平均 - 最好 - 最坏 - 空间复杂度] 大顶堆实现从小到大的升序排列,小顶堆一般用于构造优先队列
本文向大家介绍Java版快速排序[不稳定]相关面试题,主要包含被问及Java版快速排序[不稳定]时的应答技巧和注意事项,需要的朋友参考一下 原理:分治+递归 复杂度:O(nlgn) - O(nlgn) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度] 栈空间0(lgn) - O(n)
本文向大家介绍Java版归并排序[稳定]相关面试题,主要包含被问及Java版归并排序[稳定]时的应答技巧和注意事项,需要的朋友参考一下 原理:采用分治法 复杂度:O(nlogn) - O(nlgn) - O(nlgn) - O(n)[平均 - 最好 - 最坏 - 空间复杂度]
本文向大家介绍Java版基数排序[稳定]相关面试题,主要包含被问及Java版基数排序[稳定]时的应答技巧和注意事项,需要的朋友参考一下 原理:分配加收集 复杂度: O(d(n+r)) r为基数d为位数 空间复杂度O(n+r)
本文向大家介绍Java版冒泡排序[稳定]相关面试题,主要包含被问及Java版冒泡排序[稳定]时的应答技巧和注意事项,需要的朋友参考一下 复杂度:O(n^2) - O(n) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度]
本文向大家介绍Java版插入排序[稳定]相关面试题,主要包含被问及Java版插入排序[稳定]时的应答技巧和注意事项,需要的朋友参考一下 适用于小数组,数组已排好序或接近于排好序速度将会非常快 复杂度:O(n^2) - O(n) - O(n^2) - O(1)[平均 - 最好 - 最坏 - 空间复杂度]