Selection Sort
function sortArray(nums: number[]): number[] {
const len = nums.length
if (len <= 1) {
return nums
}
for (let i = 0; i < len - 1; i++) {
let minIndex = i
for (let j = i + 1; j < len; j++) {
if (nums[minIndex] > nums[j]) {
minIndex = j
}
}
if (minIndex !== i && nums[minIndex] < nums[i]) {
;[nums[i], nums[minIndex]] = [nums[minIndex], nums[i]]
}
}
return nums
}
时间复杂度:O(n²) 空间复杂度:O(1) 稳定性:不稳定
function sortArray(nums: number[]): number[] {
if (nums.length <= 1) {
return nums
}
for (let i = 0; i < nums.length; i++) {
// 记录最小数下标为初始下标
let minIndex = i
// 遍历比较第一个数与后续所有的数
for (let j = i + 1; j < nums.length && nums[minIndex] > nums[j]; j++) {
// 记录最小数的下标
minIndex = j
}
// 如果最小数的下标不是初始下标,交换最小数到第一个位置
if (minIndex !== i) {
;[nums[i], nums[minIndex]] = [nums[minIndex], nums[i]]
}
}
return nums
}