题解 | #排序#
排序
https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 将给定数组排序
* @param arr int整型一维数组 待排序的数组
* @return int整型一维数组
*/
function MySort( arr ) {
// write code here
// 计算数组长度
let len = arr.length
//利用插入排序,时间复杂度n^2
for(let i = 1;i< len;i++){
for(let j = i;j >=1;j--){
if(arr[j-1]>arr[j]){
let temp = arr[j-1]
arr[j-1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
module.exports = {
MySort : MySort
};
插入排序时间复杂度最好为O(n),最坏为O(n^2),具体分两步操作:
(1)假定第一个元素为最大元素,然后从第二个元素开始,如果小于第一个元素,则交换位置;
note:当前元素并非只与前一个元素进行判断以及交换,而是当前元素与之前所有的元素进行比对。小于就进行交换。
(2)一趟插入排序结束,下一趟会从当前元素的下一个元素开始