题解 | #排序#

排序

https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

//堆排序  时间O(n log n) 空间O(1) 不稳定
#include <any>
#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    void heapSort(vector<int>& nums,int heapsize){
        //调整为小根堆
        for(int i=heapsize/2-1;i>=0;i--){
            heapify_down(nums, heapsize, i);
        }
        //输出
        for(int i=heapsize-1;i>0;i--){
            swap(nums[0],nums[i]);
            heapsize--;
            //先减小堆数量  再调整堆
            heapify_down(nums, heapsize, 0);
        }
    }

    void heapify_down(vector<int>& nums,int heapsize,int i){
        int largest=i;
        int left=2*i+1;
        int right=2*i+2;
        if(left<heapsize&&nums[left]>nums[largest]) largest=left;
        if(right<heapsize&&nums[right]>nums[largest]) largest=right;
        if(largest!=i){
            swap(nums[largest],nums[i]);
            heapify_down(nums,heapsize,largest);
        }
    }
    vector<int> MySort(vector<int>& arr) {
        // write code here
        heapSort(arr, arr.size());
        return arr;
    }
};

全部评论

相关推荐

02-01 19:48
门头沟学院 Java
神哥了不得:(非引流)直接暑期吧,没时间日常了,老鱼简历把水印去了,或者换个模板,简历字体大小都不太行,建议换2个高质量的项目,面试应该还会再多一些
点赞 评论 收藏
分享
01-02 21:17
已编辑
西安理工大学 后端
程序员小白条:项目不太重要,你的优势的算法竞赛,然后多背相关的八股文,项目可以不作为重点考虑,面试可能就简单带过项目就行了,你可以直接写简历,背项目相关的八股文就行,也不用自己做,时间紧张的情况下,性价比最高
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务