拖动排序的后台处理
有时候总是要用到排序,一下总结了两种排序的算法。
(待排序的实体对象有有个序号字段)
1、把一对象排在目标对象之上;可以跨级排序。排序之后目标对象的序号总是排在被排序的对象之后。
// 目标序号 Integer intMuBiaoXuHao = mubiaoYh.getYhXh(); TYh tyh = tyhDAO.findById(myh.getYhId());//待排序的对象 String JPQL_JIA = "update TYh model set model.yhXh = model.yhXh + 1 where model.yhXh >= ? and model.tbmByyhBmid.classId = " + myh.getYhBmid(); String JPQL_JIAN = "update TYh model set model.yhXh = model.yhXh - 1 where model.yhXh >= ? and model.tbmByyhBmid.classId = " + tyh.getTbmByyhBmid().getClassId(); if (intMuBiaoXuHao - 1 > tyh.getYhXh() && myh.getYhBmid().equals(tyh.getTbmByyhBmid().getClassId())) { tyhDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao); tyhDAO.executeByJPQL(JPQL_JIAN, tyh.getYhXh()); myh.setYhXh(intMuBiaoXuHao - 1); } else if (intMuBiaoXuHao < tyh.getYhXh() || !myh.getYhBmid().equals(tyh.getTbmByyhBmid().getClassId())) { tyhDAO.executeByJPQL(JPQL_JIAN, tyh.getYhXh()); tyhDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao); myh.setYhXh(intMuBiaoXuHao); }tyhDAO.update(tyh);
我采用的是spring和jap做的,此处只介绍算法思路。配置就免了。
2、也就是很普通的替换排序,一个对象替换了另一个对象的位置,当目标序号>原始序号,小于等于目标序号的对象序号都-1,当目标序号<原始序号,大于等于目标序号的对象序号都+1。代码:
Integer intMuBiaoXuHao = 0; TXx txx = txxDAO.findById(xxId); TXx txxnew = txxDAO.findById(xxNewId);//被替换的目标选项 intMuBiaoXuHao = txxnew.getXxXh();//新序号,目标序号 String JPQL_JIA = "update TXx model set model.xxXh = model.xxXh + 1 where model.xxXh >= ? and model.xxLx ='"+txx.getXxLx()+"'"; String JPQL_JIAN = "update TXx model set model.xxXh = model.xxXh - 1 where model.xxXh >= ? and model.xxLx ='"+txx.getXxLx()+"'"; if (intMuBiaoXuHao > txx.getXxXh() ) {//目标序号大于原始序号 txxDAO.executeByJPQL(JPQL_JIAN, txx.getXxXh()); txxDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao); } else if (intMuBiaoXuHao < txx.getXxXh()) {//目标序号小于原始序号 txxDAO.executeByJPQL(JPQL_JIA, intMuBiaoXuHao); txxDAO.executeByJPQL(JPQL_JIAN, txx.getXxXh()+1); } txx.setXxXh(intMuBiaoXuHao); txxDAO.update(txx);
相关推荐
randy0 2020-11-17
lixiaotao 2020-10-07
美丽的泡沫 2020-09-08
nongfusanquan0 2020-08-18
hang0 2020-08-16
earthhouge 2020-08-15
算法改变人生 2020-07-28
troysps 2020-07-19
Broadview 2020-07-19
chenfei0 2020-07-18
风吹夏天 2020-07-07
yangjingdong00 2020-07-05
数据与算法之美 2020-07-05
shawsun 2020-07-04
数据与算法之美 2020-07-04
要知道时间复杂度只是描述一个增长趋势,复杂度为O的排序算法执行时间不一定比复杂度为O长,因为在计算O时省略了系数、常数、低阶。实际上,在对小规模数据进行排序时,n2的值实际比 knlogn+c还要小。
Evankaka 2020-07-04
田有朋 2020-06-28