看到推荐贴, 我也来发一个实体类排序的, 用快速排序法, 可以依据多个字段排序

依然白板 依然白板 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
        /// <summary>
/// Sort a entity array.
/// </summary>
/// <param name="orgArray">Entity array.</param>
/// <param name="isAsc">Sort order.</param>
/// <param name="orderBy">
/// An array of properties names. Must be a property in each of them,
/// and the properties comparable. Compare these properties values.
/// </param>
public static void Sort(object[] orgArray, bool isAsc, params string[] orderBy)
{
if (orgArray == null || orgArray.Length == 0)
return;

sort(orgArray, 0, orgArray.Length, isAsc, orderBy);
}

/// <summary>
/// Quicksort.
/// </summary>
/// <param name="orgArray">Entity array.</param>
/// <param name="low"></param>
/// <param name="high"></param>
/// <param name="orderBy">
/// An array of properties names. Must be a property in each of them,
/// and the properties comparable. Compare these properties values.
/// </param>
private static void sort(object[] orgArray, int low, int high, bool isAsc, params string[] orderBy)
{
int i, j, f;
object t;
if (low == high)
return;
if (low == high - 1)
{
if ((Compare(orgArray[low] , orgArray[high], orderBy) < 0) == isAsc)
{
t = orgArray[low];
orgArray[low] = orgArray[high];
orgArray[high] = t;
}
return;
}

i = low;
j = high;
f = low;
while (i != j)
{
for (; j != i; j-- )
{
if ((Compare(orgArray[j], orgArray[f], orderBy) < 0) == isAsc)
{
t = orgArray[j];
orgArray[j] = orgArray[f];
orgArray[f] = t;
f = j;
break;
}
}
if (i == j) break;
for (; i != j; i++ )
{
if ((Compare(orgArray[i], orgArray[f], orderBy) < 0) == isAsc)
{
t = orgArray[i];
orgArray[i] = orgArray[f];
orgArray[f] = t;
f = i;
break;
}
}
}
if (f > low)
sort(orgArray, low, f - 1, isAsc, orderBy);
if ( f < high)
sort(orgArray, f + 1, high, isAsc, orderBy);
}

/// <summary>
/// Compare two object.
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="orderBy">
/// An array of properties names. Must be a property in each of them,
/// and the properties comparable. Compare these properties values.
/// </param>
/// <returns>
/// A 32-bit signed integer that indicates the relative order of the objects
/// being compared. The return value has these meanings: Value Meaning Less than
/// zero This instance is less than obj. Zero This instance is equal to obj.
/// Greater than zero This instance is greater than obj.
/// </returns>
private static int Compare(object a, object b, params string[] orderBy)
{
Type type = a.GetType();

PropertyInfo pro = null;
foreach (string proname in orderBy)
{
pro = type.GetProperty(proname);
if (!pro.GetValue(a, null).Equals(pro.GetValue(b, null)))
{
return ((IComparable)pro.GetValue(a, null)).CompareTo(pro.GetValue(b, null));
}

}

return 0;
}
}
...全文

相关推荐

产业园区运营负责人如何利用平台挖掘企业技术需求并精准对接?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

Challenges in Functional Verification of PCIe 3.0 Devices.pdf

Challenges in Functional Verification of PCIe 3.0 Devices.pdf

Kernel_RDMA

轻美图纯PHP图库网站源码(内含1000+美图).zip

纯PHP的移动端图库站:把图片按「img/日期目录/」存放,自动按上传批次归组,前台封面卡瀑布流展示,手机电脑都能看。 不依赖数据库服务、不依赖框架,PHP自带SQLite即可。内含1000+美图,虚拟主机上传即用。

智慧浩海

chrome-win32-158.0.8127.18(Beta).zip

chrome-win32-158.0.8127.18(Beta).zip

LCG元

无刷直流电机BLDC转速电流双闭环+无位置传感器控制仿真【仿真+详解说明报告+参考文献】

内容概要:本文提供了一套关于无刷直流电机(BLDC)转速电流双闭环控制与无位置传感器控制的Simulink仿真资源,包含完整的仿真模型、详尽的说明报告及参考文献。资源核心聚焦于BLDC的高性能控制策略,重点实现了基于滑模观测器(SMO)的无位置传感器控制技术,并系统对比了模糊PID与传统PID控制在BLDC调速系统中的性能差异。内容涵盖了转速环与电流环的双闭环PI控制器设计、反电动势过零检测、换相逻辑、PWM调制等关键技术环节,同时提供了模糊神经网络PID等先进智能控制算法的扩展仿真模型,旨在帮助用户深入理解BLDC的控制原理、无感控制实现方法及多种智能控制策略的仿真建模技术。; 适合人群:具备一定电力电子技术、自动控制理论和电机学基础,从事电机驱动控制、电力传动系统研究或相关产品开发的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握无刷直流电机双闭环控制系统的设计流程与Simulink仿真建模方法;② 深入研究并实践基于滑模观测器的无位置传感器控制技术的实现原理与参数整定;③ 对比分析模糊PID、传统PID及模糊神经网络PID等多种智能控制算法在BLDC调速系统中的动态响应、抗干扰能力和稳态精度等性能差异;④ 为电机控制相关的课程设计、毕业设计、科研项目或工程开发提供可复现的仿真模型和理论依据。; 阅读建议:建议读者结合所提供的详解说明报告与参考文献,严格按照步骤在Simulink环境中搭建、调试和运行仿真模型。学习过程中应重点关注控制器参数(如PI参数)的整定过程、滑模观测器的设计与抖振抑制、以及不同控制策略下系统的启动、调速和抗负载扰动等动态响应特性,通过大量的对比仿真实验,深化对BLDC控制理论与工程实践的理解。

woshilaiwade
评论 10
收藏 已收藏
分享
返回顶部
依然白板
C# 111,129 成员 642,540 内容