二叉树面试题
选择排序是在遍历一个待排序的数组过程中,
第一次从 arr[0] 到 arr[n-1] 中选取最小值,与 arr[0] 交换;
第二次从arr[1] 到 arr[n-1]中选取最小值, 与arr[1]交换;
第三次从arr[2] 到 arr[n-1]中选取最小值,与arr[2]交换;
……
第 i 次从 arr[i-1] 到 arr [n-1] 中选取最小值,与arr[i-1]交换;
第n-1次从 arr[n-2] 到 arr [n-1] 中选取最小值,与 arr[n-2] 交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
具体实现参考如下源代码:
public static void choice(int arr[]) {
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
A. 11,1,2,12,35,18,30,15
B. 1,2,12,18,15,35,30,11
C. 1,2,11,12,15,18,30,35
D. 1,2,11,12,15,18,35,30
答案:B
解析:第一趟选择1,将1和12交换位置,序列变为1,15,12,18,2,35,30,11,第二趟选择2,将2和15交换位置,序列变为1,2,12,18,15,35,30,11;故B正确
A. 数据已按升序排列
B. 数据已按升降序排列
C. 俩者花费时间一样
答案:C
解析:不管升序还是降序 其比较次数都是整条路径。