1431:Sort

本文介绍了一种使用Hash数组而非排序的方法,在限定范围内高效地找出一组整数中的前m个最大值。通过偏移处理,实现了对包括负数在内的特定区间内的整数的有效统计。
  • 题目描述:

    给你n个整数,请你按从大到小的顺序输出其中前m大的数。

  • 输入:

    每组测试数据有两行,第一行有两个数n,m(0

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <algorithm>

    using namespace std;

    bool cmp(int x,int y){
    return x>y;
    }

    int main()
    {
        int n,m;
        int buf[1000001];
        while(scanf("%d %d",&n,&m)!=EOF){
            for(int i=0;i<n;i++){
                scanf("%d",&buf[i]);
            }
            sort(buf,buf+n,cmp);
            for(int i=0;i<m;i++){
                printf("%d ",buf[i]);
            }
        }
        return 0;
    }
    /*
    5 3
    3 -35 92 213 -644
    */

用上面的简单排序的方法做可以得出结果,但时间复杂度会达到千万数量级,无法在一秒内完成,那么用Hash数组的方式怎么来实现呢?
本题中要求输入的数据是-500000~500000之间,会有负数的出现,而数组的下标从0开始,这就需要我们将<0范围的做一个处理,加上一个偏移值,使其转化到[0,1000000]之间,这样我们就可以使用Hash数组了。
AC代码:

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>

    using namespace std;

    #define OFFSET 500000 //偏移量,进行负坐标的转化,便于处理
    int Hash[1000001]; //建立一个Hash数组储存数据

    int main()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF){
            //初始化Hash数组
            for(int i=-500000;i<=500000;i++){
                Hash[i+OFFSET]=0;
                //初始化为0,范围内的每一个数字均未出现过
            }

            //输入数据
            for(int i=1;i<=n;i++){
                int x;
                scanf("%d",&x);
                Hash[x+OFFSET]=1;
                //出现的数字标为1,未出现的仍然为0
            }

            //统计
            for(int i=500000;i>=-500000;i--){
                if(Hash[i+OFFSET]==1){
                    printf("%d",i);
                    m--;
                    //若未输出完则后跟空格,否则换行
                    if(m!=0){
                        printf(" ");
                    }else{
                        printf("\n");
                        break;
                    }
                }
            }
        }
        return 0;
    }
    /*
    5 3
    3 -35 92 213 -644
    */

_ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.4.2 09:53:33.334 [main] INFO c.a.d.p.DruidDataSource - [init,998] - {dataSource-1} inited 09:53:33.351 [main] DEBUG c.m.s.m.S.selectConfigList - [debug,137] - ==> Preparing: select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark from sys_config 09:53:33.548 [main] DEBUG c.m.s.m.S.selectConfigList - [debug,137] - ==> Parameters: 09:53:33.598 [main] DEBUG c.m.s.m.S.selectConfigList - [debug,137] - <== Total: 71 09:53:34.745 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Preparing: select max(order_num) from base_coding where code_type=? 09:53:34.756 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Parameters: 1(String) 09:53:34.763 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - <== Total: 1 09:53:34.765 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Preparing: select max(order_num) from base_coding where code_type=? 09:53:34.766 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Parameters: 2(String) 09:53:34.776 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - <== Total: 1 09:53:34.778 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Preparing: select max(order_num) from base_coding where code_type=? 09:53:34.779 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Parameters: 3(String) 09:53:34.788 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - <== Total: 1 09:53:34.790 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Preparing: select max(order_num) from base_coding where code_type=? 09:53:34.791 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Parameters: 4(String) 09:53:34.798 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - <== Total: 1 09:53:34.803 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Preparing: select max(order_num) from base_coding where code_type=? 09:53:34.805 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Parameters: 5(String) 09:53:34.813 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - <== Total: 1 09:53:34.816 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Preparing: select max(order_num) from base_coding where code_type=? 09:53:34.818 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - ==> Parameters: 6(String) 09:53:34.826 [main] DEBUG c.m.b.b.m.B.getLastOrderNumByCodeType - [debug,137] - <== Total: 1 09:53:35.549 [main] DEBUG c.m.b.o.m.O.selectBaseOtherDatabaseList - [debug,137] - ==> Preparing: select id, type, username, ip, password, port, database_name, create_by, create_id, create_time, update_by, update_id, update_time, sort, del_flag, version, status from abut_other_database WHERE status = ? AND del_flag = '0' 09:53:35.552 [main] DEBUG c.m.b.o.m.O.selectBaseOtherDatabaseList - [debug,137] - ==> Parameters: 0(String) 09:53:35.557 [main] DEBUG c.m.b.o.m.O.selectBaseOtherDatabaseList - [debug,137] - <== Total: 1 连接失败 com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host 127.0.0.1, port 1433 has failed. Error: "Connection refused (Connection refused). Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.". at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285) at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2466) at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:672) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2747) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2418) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2265) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1291) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:881) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at com.microsun.business.util.jdbc.DataSourceConnectionUtil.test(DataSourceConnectionUtil.java:91) at com.microsun.business.other.service.impl.OtherDatabaseServiceImpl.init(OtherDatabaseServiceImpl.java:69) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:765) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) at com.microsun.PhysicalExaminationApplication.main(PhysicalExaminationApplication.java:18) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) 09:53:40.628 [main] INFO c.m.w.c.b.t.p.r.c.ReportConfig - [getLicense,26] - 载入license 去除水印、页码限制 09:53:41.378 [main] DEBUG c.m.s.m.S.selectDictTypeAll - [debug,137] - ==> Preparing: select dict_id, dict_name, dict_type, status, create_by, create_time, remark from sys_dict_type 09:53:41.379 [main] DEBUG c.m.s.m.S.selectDictTypeAll - [debug,137] - ==> Parameters: 09:53:41.389 [main] DEBUG c.m.s.m.S.selectDictTypeAll - [debug,137] - <== Total: 66 09:53:41.392 [main] DEBUG c.m.s.m.S.selectDictDataByType - [debug,137] - ==> Preparing: select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark from sys_dict_data where status = '0' and dict_type = ? order by dict_sort asc
12-12
D:\Programs>D:/Programs/Python311/python.exe d:/Programs/计调中台/在线数据查询/在线数据查询.py 程序启动中... 当前版本: 1.0, 数据库中无更高版本 CURRENT_VERSION: 1.0 版本检查完成 2025-07-23 09:59:26,512 INFO sqlalchemy.engine.Engine SELECT DATABASE() 2025-07-23 09:59:26,515 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 09:59:26,583 INFO sqlalchemy.engine.Engine SELECT @@sql_mode 2025-07-23 09:59:26,583 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 09:59:26,618 INFO sqlalchemy.engine.Engine SELECT @@lower_case_table_names 2025-07-23 09:59:26,618 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 09:59:26,687 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 09:59:26,688 INFO sqlalchemy.engine.Engine SELECT * FROM permission WHERE IP = %(ip)s 2025-07-23 09:59:26,688 INFO sqlalchemy.engine.Engine [generated in 0.00142s] {'ip': '10.137.25.50'} 权限检查结果 - IP: 10.137.25.50, 权限值: 1, 维护权限: True 2025-07-23 09:59:26,723 INFO sqlalchemy.engine.Engine ROLLBACK 缓存目录: C:\Users\10309723\AppData\Roaming\PCBDataViewer 缓存文件: C:\Users\10309723\AppData\Roaming\PCBDataViewer\data_cache.pkl 加载配置文件失败: Expecting value: line 5 column 23 (char 64) Debug: search_vars exists - False Debug: search_widgets exists - False 获取计调员唯一值失败: 数据框未初始化 获取小组长唯一值失败: 数据框未初始化 获取大组长唯一值失败: 数据框未初始化 获取结存状态唯一值失败: 数据框未初始化 获取线体唯一值失败: 数据框未初始化 获取产品大类唯一值失败: 数据框未初始化 已启用维护按钮 2025-07-23 09:59:26,908 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 09:59:26,909 INFO sqlalchemy.engine.Engine SELECT DISTINCT 计调员 FROM part_category WHERE 计调员 IS NOT NULL AND 计调员 <> '' 2025-07-23 09:59:26,910 INFO sqlalchemy.engine.Engine [generated in 0.00168s] {} 2025-07-23 09:59:26,952 INFO sqlalchemy.engine.Engine ROLLBACK 2025-07-23 09:59:27,053 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 09:59:27,054 INFO sqlalchemy.engine.Engine DESCRIBE `bj_database`.`SELECT 工厂, 单板代码, 计调员 FROM part_category` 2025-07-23 09:59:27,055 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 09:59:27,090 INFO sqlalchemy.engine.Engine SELECT 工厂, 单板代码, 计调员 FROM part_category 2025-07-23 09:59:27,090 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 09:59:27,372 INFO sqlalchemy.engine.Engine ROLLBACK 从缓存加载产出计划表数据成功,数据行数: 3596, 上次更新时间: 2025-07-21 21:41:51.553931 缓存数据为空 未找到有效缓存数据,请点击'更新数据'按钮获取最新数据 ===== 开始处理工厂数据,当前工厂ID: 53 ===== DataViewer实例创建完成 当前时间: 2025-07-23 09:59:31 准备进入主循环 获取到工号: 10309723 使用工厂 53 的仓库ID列表,共 8 个仓库 ===== URL列表 ===== URL1 (wipDailyStatistics): https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-productionmgmtsys/wipDailyStatistics/qu ery URL2 (schedulingAdjustPage): https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-planschedulesys/PS/schedulingAdjustPa ge?workOrderStatusList=%E5%B7%B2%E6%8F%90%E4%BA%A4,%E5%B7%B2%E5%BC%80%E5%B7%A5,%E6%8C%82%E8%B5%B7&workshopCode=&lineCode=&order=asc&sort=scheduleSta rtDate&page=1&rows=30000&craftSections=%E8%83%8C%E6%9D%BF,%E9%93%A3%E6%9D%BF,DIP,%E6%B6%82%E8%A6%86,Test,SMT-A,SMT-B,%E6%89%8B%E8%B4%B4 URL3 (workOrderPriorityQueue): https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-planschedulesys/workOrderPriorityQu eue/page URL4 (conciseDailyQuery): https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-productionmgmtsys/conciseDaily/conciseDa ilyQuery URL5 (linesideWarehouseInfo): https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-productiondeliverysys/linesideWareho useInfoCtrl/getReqHead ----- 开始请求2 (schedulingAdjustPage) ----- 请求时间: 2025-07-23 09:59:31 请求URL: https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-planschedulesys/PS/schedulingAdjustPage?workOrderStatusLi st=%E5%B7%B2%E6%8F%90%E4%BA%A4,%E5%B7%B2%E5%BC%80%E5%B7%A5,%E6%8C%82%E8%B5%B7&workshopCode=&lineCode=&order=asc&sort=scheduleStartDate&page=1&rows=3 0000&craftSections=%E8%83%8C%E6%9D%BF,%E9%93%A3%E6%9D%BF,DIP,%E6%B6%82%E8%A6%86,Test,SMT-A,SMT-B,%E6%89%8B%E8%B4%B4 ----- 开始请求3 (workOrderPriorityQueue) -----请求头: {'x-factory-id': '53', 'x-emp-no': '10309723', 'x-auth-value': '523b27c3cb6e70e458ac150d9d381d 32'} 请求时间: 2025-07-23 09:59:31 请求URL: https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-planschedulesys/workOrderPriorityQueue/page 请求参数: {'releaseDateStart': '', 'releaseDateEnd': '', 'deliveryDateStart': '', 'deliveryDateEnd': '', 'page': 1, 'rows': 300} 请求头: {'x-factory-id': '53', 'x-emp-no': '10309723', 'x-auth-value': '523b27c3cb6e70e458ac150d9d381d32'} 响应状态码: 200 获取到数据行数: 250 响应状态码: 200 获取到数据行数: 1431 ----- 开始请求5 (linesideWarehouseInfo) ----- 请求时间: 2025-07-23 09:59:34 请求URL: https://imes.zte.com.cn/zte-mes-manufactureshare-gateway/zte-mes-manufactureshare-productiondeliverysys/linesideWarehouseInfoCtrl/getReqHea d 请求头: {'x-factory-id': '53', 'x-emp-no': '10309723', 'x-auth-value': '523b27c3cb6e70e458ac150d9d381d32'} 获取到数据行数: 294 首条数据示例: {'id': '1947821489868275713', 'accessSystem': '102', 'billNo': 'XBRKCN20250723047419', 'billInfoType': '调拨入库', 'billTypeCode': '央 仓调拨入库(A材)', 'srcBillNo': 'IMES20250723000040', 'statusCode': '已提交', 'productionBatch': '7725582', 'fromWarehouseId': '', 'fromStockId': Non e, 'fromLocationId': None, 'toWarehouseId': '深圳B1-3F线边仓001', 'toStockId': 'XBC_ZTSZ', 'toLocationId': None, 'createdDate': '2025-07-23 08:50:06 ', 'createdBy': '10182329', 'lastUpdatedDate': '2025-07-23 08:50:06', 'lastUpdatedBy': '10182329', 'warehouseNo': None, 'warehouseName': None, 'stoc kNo': None, 'stockName': None, 'locationNo': None, 'locationId': None, 'dateStart': None, 'dateEnd': None, 'rfFeature': '{"externalorderkey2":"IMES2 0250723000040"}', 'current': None, 'searchCount': None, 'size': None, 't': None, 'page': 1, 'total': 294, 'currentPage': None, 'pageSize': None, 'he adId': None, 'workOrderNo': None, 'warehouseIds': None, 'attribute1': None, 'factoryId': None, 'empNo': None, 'taskNo': 'wqx2507082F03-z', 'batchTyp e': 0, 'headSrcBill': None, 'warehouseId': None, 'itemNo': None, 'externalOrderKey2': 'IMES20250723000040'} 工厂ID 53 获取到 2549 条记录 d:\Programs\计调中台\在线数据查询\在线数据查询.py:509: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclu de the groupings or explicitly select the grouping columns after groupby to silence this warning. pf_final = pf_filtered.groupby('批次').apply(merge_rows).reset_index(drop=True) ----- 开始合并df1和pf_final ----- 合并前df1行数: 961 合并前pf_final行数: 714 去重后df1行数: 923 去重后pf_final行数: 714 合并后df_1行数: 923 合并后重复批次检查: 0个重复批次 d:\Programs\计调中台\在线数据查询\在线数据查询.py:536: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '' has dtype incompatible with float64, please explicitly cast to a compatible dtype first. df_1.fillna('', inplace=True) ----- 开始读取delivery_date表数据 ----- 2025-07-23 10:00:01,621 INFO sqlalchemy.engine.Engine SELECT DATABASE() 2025-07-23 10:00:01,623 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:01,689 INFO sqlalchemy.engine.Engine SELECT @@sql_mode 2025-07-23 10:00:01,689 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:01,723 INFO sqlalchemy.engine.Engine SELECT @@lower_case_table_names 2025-07-23 10:00:01,724 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:01,792 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 10:00:01,792 INFO sqlalchemy.engine.Engine DESCRIBE `bj_database`.`SELECT * FROM delivery_date` 2025-07-23 10:00:01,793 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:01,822 INFO sqlalchemy.engine.Engine SELECT * FROM delivery_date 2025-07-23 10:00:01,828 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:02,099 INFO sqlalchemy.engine.Engine ROLLBACK 获取到delivery_date表数据行数: 2795 ----- 开始合并df_1和df_sql ----- 合并前df_1行数: 923 合并前df_sql行数: 2608 合并后df行数: 923 新增'是否急件'字段后行数: 923 2025-07-23 10:00:02,153 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 10:00:02,154 INFO sqlalchemy.engine.Engine DESCRIBE `bj_database`.`SELECT 工厂, 单板代码, 计调员, 周期类别 FROM part_category` 2025-07-23 10:00:02,155 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:02,189 INFO sqlalchemy.engine.Engine SELECT 工厂, 单板代码, 计调员, 周期类别 FROM part_category 2025-07-23 10:00:02,190 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:02,323 INFO sqlalchemy.engine.Engine ROLLBACK 2025-07-23 10:00:02,415 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 10:00:02,416 INFO sqlalchemy.engine.Engine DESCRIBE `bj_database`.`SELECT 线体, 小组长, 大组长, 科室 FROM lineteamleader` 2025-07-23 10:00:02,416 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:02,450 INFO sqlalchemy.engine.Engine SELECT 线体, 小组长, 大组长, 科室 FROM lineteamleader 2025-07-23 10:00:02,451 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:02,489 INFO sqlalchemy.engine.Engine ROLLBACK ----- 计调员和科室信息 ----- 计调员示例: 未分配 科室示例: nan 2025-07-23 10:00:02,723 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-07-23 10:00:02,725 INFO sqlalchemy.engine.Engine DESCRIBE `bj_database`.`SELECT 批次, 转交时间 FROM gongxu90time` 2025-07-23 10:00:02,725 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:02,759 INFO sqlalchemy.engine.Engine SELECT 批次, 转交时间 FROM gongxu90time 2025-07-23 10:00:02,761 INFO sqlalchemy.engine.Engine [raw sql] {} 2025-07-23 10:00:03,135 INFO sqlalchemy.engine.Engine ROLLBACK 成功获取url_5数据,共213条记录 成功合并url_5数据 工厂ID 53 获取到 2550 条记录 工厂ID 55 获取到 1477 条记录 Traceback (most recent call last): File "d:\Programs\计调中台\在线数据查询\在线数据查询.py", line 5477, in <module> main() File "d:\Programs\计调中台\在线数据查询\在线数据查询.py", line 5467, in main app.run() File "d:\Programs\计调中台\在线数据查询\在线数据查询.py", line 2086, in run self.root.mainloop() File "D:\Programs\Python311\Lib\tkinter\__init__.py", line 1504, in mainloop self.tk.mainloop(n) KeyboardInterrupt
07-24
【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 关于 `ranges::sort` 和 `std::sort` 的区别及用法 #### 定义与背景 在 C++20 中引入了 Ranges 库,它扩展了标准库的功能并提供了更灵活的操作方式。传统的 `std::sort` 是基于迭代器的算法,而新的 `ranges::sort` 则利用范围(range)的概念来简化语法和增强表达能力。 传统方法使用 `std::sort` 需要显式指定起始和结束迭代器[^1]: ```cpp #include <algorithm> #include <vector> int main() { std::vector<int> vec = {5, 3, 8, 6}; std::sort(vec.begin(), vec.end()); } ``` 相比之下,`ranges::sort` 提供了一种更加直观的方式,允许直接操作容器本身而不需手动传递迭代器: ```cpp #include <algorithm> #include <vector> #include <ranges> int main() { std::vector<int> vec = {5, 3, 8, 6}; std::ranges::sort(vec); } ``` #### 功能差异 - **参数灵活性**: `ranges::sort` 支持更多的自定义选项,比如通过投影函数实现复杂的排序逻辑。这使得它可以轻松处理复合数据结构中的特定字段排序。 - **可读性提升**: 使用 `ranges::sort` 可以减少冗余代码量,使程序更具可读性和维护性。例如,在对对象数组按某个成员变量排序: ```cpp struct Person { std::string name; int age; }; bool compare_by_age(const Person& lhs, const Person& rhs) { return lhs.age < rhs.age; } // Using std::sort with custom comparator std::vector<Person> people = {...}; // Initialize vector here. std::sort(people.begin(), people.end(), compare_by_age); // Using ranges::sort with projection (C++20 feature) std::ranges::sort(people, {}, &Person::age); ``` 上述例子展示了如何借助 lambda 或者指针到成员访问器作为投影机制来完成相同任务。 #### 性能考量 理论上讲两者应该具有相似性能特征因为底层实现最终都会调用相同的低级原语来进行实际工作。然而由于编译优化程度不同或者额外封装层的存在可能导致细微差别但在大多数情况下这些影响可以忽略不计。 --- ### 示例对比 下面给出一段完整的示例展示两者的异同: ```cpp #include <iostream> #include <vector> #include <algorithm> #include <ranges> void print_vector(const std::vector<int>& v){ for(auto elem : v){ std::cout << elem << ' '; } std::cout << '\n'; } int main(){ std::vector<int> data{7,2,9,4,1,5}; // Traditional approach using std::sort std::vector<int> copy1 = data; std::sort(copy1.begin(),copy1.end()); std::cout<<"Sorted by std::sort:\t"; print_vector(copy1); // Modern range-based version std::vector<int> copy2 = data; std::ranges::sort(copy2); std::cout<<"Sorted by ranges::sort:\t"; print_vector(copy2); return 0; } ``` 此代码片段分别演示了两种不同的排序技术及其输出效果. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值