题目:
给定一个无序数组,找出数组再排序之后,相邻元素之间的最大间距
如果数组元素个数小于2,则返回0
示例:
常规做法:
<script>
const maximumGap = arr => {
//如果数组长度小于2,则返回0
if (arr.length < 2) {
return 0;
}
//排序
arr.sort();
//保存相邻元素的最大差值
let max = 0;
//遍历数组
for (let i = 0, len = arr.length - 1, tmp; i < len; i++) {
tmp = arr[i + 1] - arr[i];
if (tmp > max) {
max = tmp;
}
}
return max;
}
console.log(maximumGap([3, 6, 9, 1]));
</script>
采用选择排序:
<script>
const maximumGap = arr => {
//如果数组长度小于2,则返回0
if (arr.length < 2) {
return 0;
}
//保存相邻元素的最大差值
let max = 0;
//遍历数组
for (let len = arr.length - 1, i = len, tmp; i > 0; i--) {
for (let j = 0; j < i; j++) {
tmp = arr[j];
if (tmp > arr[j + 1]) {
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
if (i < len) {
let dif = arr[i + 1] - arr[i];
if (dif > max) {
max = dif;
}
}
}
return Math.max(max, arr[1] - arr[0]);
}
console.log(maximumGap([3, 6, 9, 1]));
</script>