题解 | #排序#

排序

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)一趟插入排序结束,下一趟会从当前元素的下一个元素开始

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务