插入排序

直接插入排序与折半插入排序:

#include <iostream>
using namespace std;
//直接插入排序
void InsertSort(int *arr,int size)
{
    int j;
    if(!arr)
        return ;
    for (int i=1;i<size;i++)
    {
        int tmp = arr[i];
        for (j = i-1; j>=0 && tmp < arr[j];j--)
        {
            arr[j+1] = arr[j];
        }
        arr[j+1] =tmp ;

    }
}
/// 二分插入排序
void BInsertSort (int * arr,int size)
{
    if(!arr)
        return ;
for (int i =1 ;i<size ;i++)
    {
        int tmp = arr[i];
        //二分查找来确定欲插入元素的应在位置
        int low =0,high = i-1 ,mid ;
        while (low<= high)
        {
            mid= (low+high)/2;
            if(arr[i]<arr[mid])
                high = mid-1;
            else
                low = mid +1 ;
        }
        for (int j =i-1 ;j>=low;j--)
        {
            arr[j+1]= arr[j];
        }
        arr[low]= tmp ;
    }
}

void output(int *a, int len)
{
    for(int i = 0; i < len; ++i)
    {
        cout << a[i] << " ";
    }
    cout << endl;
}
int main()
{
    int a[] = {6, 9, 1, 3, 6, 8, 9, 4};
    int len =  sizeof(a) / sizeof(int);
    output(a, len);
    InsertSort(a,len);
    output(a, len);
    BInsertSort(a,len);
    output(a, len);
}

希尔排序:

#include <iostream>
#include <stdlib.h>
using namespace std;
void ShellInsert(int *arr ,int size ,int delta)
{
    int j;
    for (int i = delta;i<size;i++)
    {
        int tmp = arr[i];
        for (j = i-delta; j>=0 && tmp < arr[j];j-=delta)
        {
            arr[j+delta] = arr[j];
        }
        arr[j+delta] = tmp ;
    }
}
void ShellSort(int * arr,const int size)
{
    if(!arr)
        return ;
    int increment = size ;
    do {
        increment = increment/3 +1;
        ShellInsert(arr,size,increment);
    } while(increment>1);
}

void output(int *a, int len)
{
    for(int i = 0; i < len; ++i)
    {
        cout << a[i] << " ";
    }
    cout << endl;
}
int main()
{
    int a[] = {6, 9, 1, 3, 6, 8, 9, 4};
    int len =  sizeof(a) / sizeof(int);
    output(a, len);
    ShellSort(a,len);
    output(a, len);
}
内容概要:该论文研究增程式电动汽车(REEV)的能量管理策略,针对现有优化策略实时性差的问题,提出基于工况识别的自适应等效燃油消耗最小策略(A-ECMS)。首先建立整车Simulink模型和基于规则的策略;然后研究动态规划(DP)算法和等效燃油最小策略;接着通过聚类分析将道路工况分为四类,并设计工况识别算法;最后开发基于工况识别的A-ECMS,通过高德地图预判工况类型并自适应调整SOC分配。仿真显示该策略比规则策略节油8%,比简单SOC规划策略节油2%,并通过硬件在环实验验证了实时可行性。 适合人群:具备一定编程基础,特别是对电动汽车能量管理策略有兴趣的研发人员和技术爱好者。 使用场景及目标:①理解增程式电动汽车能量管理策略的基本原理;②掌握动态规划算法和等效燃油消耗最小策略的应用;③学习工况识别算法的设计和实现;④了解基于工况识别的A-ECMS策略的具体实现及其优化效果。 其他说明:此资源不仅提供了详细的MATLAB/Simulink代码实现,还深入分析了各算法的原理和应用场景,适合用于学术研究和工业实践。在学习过程中,建议结合代码调试和实际数据进行实践,以便更好地理解策略的优化效果。此外,论文还探讨了未来的研究方向,如深度学习替代聚类、多目标优化以及V2X集成等,为后续研究提供了思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值