插入排序

插入排序和冒泡排序,之前一直特容易混淆。。。。。
插入排序:想起小时候的桥牌,即每摸一张牌,就要将牌插入到已经排好序的序列中。假设输入是数组nums,要将数组升序排列,依次从头至尾对数组执行如下操作:
比较当前元素nums[i]与nums0~numsi-1;若num[i] 大于其中某一个元素j (j的范围0~i-1),先将j~(i-1)位置上的元素依次后移,然后将nums[i]插入至j位置。

对于插入和冒泡,插入排序是元素与已经排好序的序列比较,冒泡是相邻元素依次比较并调换顺序。囧~~~~~。
插入排序代码如下:

#include <stdio.h>
#include <vector>
#include <stdio.h>

using namespace std;
class Solution {
public:
    // 从位置front_index 至last_index之间元素依次后移
    // last_index就是当前比较的元素的位置
    void moveElements(vector<int>& nums, int front_index, int last_index)
    {
        if (last_index <= front_index || front_index < 0 || last_index >= nums.size())
        {
            return ;
        }
        for (int j = last_index - 1; j >= front_index; j--)

        {
            nums[j + 1] = nums[j];
        }
    }

    vector<int> sortArray(vector<int>& nums) {

        for (int i = 1; i < nums.size(); i++) {
            for (int j = 0; j < i; j++)
            {
                //依次拿i前面的有序序列和nums[i]进行比较
                if (nums[j] > nums[i])
                {
                    //先将j~(i-1)位置上的元素依次后移,然后将nums[i]插入至j位置
                    int tmp = nums[i];
                    moveElements(nums, j, i);
                    nums[j] = tmp;
                }
            }
        }
        return nums;
    }
};
int main()
{
    Solution solution;
    std::vector<int> nums = {4, 5, 2, 6, 1};
    solution.sortArray(nums);

    for (int i = 0; i < 5; i++)
    {
        printf("%d",nums[i]);
    }
}
内容概要:《绿色转型美丽乡村——汾渭平原地区低碳乡村案例集》由西安空气侠环保科技有限公司编写,北京市企业家环保基金会支持,聚焦汾渭平原地区乡村低碳发展的典型实践。报告梳理了国内外相关理论研究及政策背景,展示了中央与地方在低碳乡村发展方面的政策措施。通过五个典型案例,包括芮城县庄上村的“光储直柔”模式、铜川耀州区克坊村的“光伏+普惠金融”、浮山县臣南河村的循环经济模式、澄城县权家河村的“风光储一体化”以及麟游县紫石崖村的“光伏+生态养殖”,详细分析了这些案例的技术路线、项目成效、主要政策、典型经验和存在问题。报告总结了清洁能源在乡村低碳发展中的核心地位,强调了因地制宜发展策略的关键作用,并指出了多重效益综合追求的重要性。 适合人群:从事环保、农业、能源领域研究的专业人士,以及关注乡村低碳发展和可持续发展的政策制定者和社会学者。 使用场景及目标:①为全国其他地区开展乡村能源转型实践提供有益的借鉴;②助力推动我国乡村低碳发展,为实现碳达峰、碳中和目标贡献积极力量;③为政策制定者提供决策参考,促进乡村绿色转型和乡村振兴战略的实施。 其他说明:报告由多家单位参编,感谢北京市企业家环保基金会提供资金支持。文中内容及意见仅代表作者的个人观点,与北京市企业家环保基金会的立场或政策无关。报告期望为全国其他地区开展乡村能源转型实践提供有益的借鉴,助力推动我国乡村低碳发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值