冒泡排序
// let arr = [5, 4, 3, 2, 1]
let arr = [2, 4, 3, 5, 1]
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
// 开始交换 但是前提 第一个数大于第二个数才交换
if (arr[j] > arr[j + 1]) {
// 交换2个变量
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
// sort 升序排列
// arr.sort(function (a, b) {
// return a - b
// })
// sort() 降序
// arr.sort(function (a, b) {
// return b - a
// })
912. 排序数组
public class Solution {
// 插入排序:稳定排序,在接近有序的情况下,表现优异
public int[] sortArray(int[] nums) {
int len = nums.length;
// 循环不变量:将 nums[i] 插入到区间 [0, i) 使之成为有序数组
for (int i = 1; i < len; i++) {
// 先暂存这个元素,然后之前元素逐个后移,留出空位
int temp = nums[i];
int j = i;
// 注意边界 j > 0
while (j > 0 && nums[j - 1] > temp) {
nums[j] = nums[j - 1];
j--;
}
nums[j] = temp;
}
return nums;
}
}
//插入排序
var sortArray = function(nums) {
const n = nums.length;
for (let i = 1; i < n; ++i) {
let j = i - 1;
const tmp = nums[i];
while (j >= 0 && tmp < nums[j]) {
nums[j + 1] = nums[j];
--j;
}
nums[j + 1] = tmp;
}
return nums;
};
2418. 按身高排序
public String[] sortPeople(String[] names, int[] heights) {
int n = names.length;
Integer[] id = new Integer[n];
//获取人员数量 n,并创建一个整数数组 id,用于保存人员的索引。
for (int i = 0; i < n; ++i) {
id[i] = i;
}
//使用 Arrays.sort 方法对 id 数组进行排序,排序规则为根据对应身高数组 heights 的值进行降序排序
Arrays.sort(id, (i, j) -> heights[j] - heights[i]);
String[] ans = new String[n];
for (int i = 0; i < n; ++i){
ans[i] = names[id[i]];
}
return ans;
}
//通用做法是创建一个下标数组,对下标数组排序