• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 关于排序的问题

关于排序的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了excel排序出现问题,excel排序问题,排序问题,excel表格排序问题,excel中排序问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于排序的问题
描述:

现在有一个分类表包含如下字段

  • id
  • parentid 父id
  • order 该项在其所处层级的显示顺序,值越小越靠前
  • text 内容

比如像下边这样的数据(text 字段内容只是为了方便说明才这么写,实际内容不是这样):

idparentidordertext
10101
2002
31201-2
41101-1
53201-2-2
63101-2-1
72302-1

如何将其排序为(大体是按 parentid 和 order 排序)

idparentidordertext
2002
72302-1
10101
41101-1
31201-2
63101-2-1
53201-2-2

简单来说就是一个无限分类的子分类排序问题。先按照 父子分类排序,再将 所有同级分类按照 order 排序。

我目前用的是最笨的方法,就是将 每层分类单独读取出来(递归),排序好后在插入到总数组中,而且目前只测试了对3级分类的支持, 但是感觉这种效率好低啊,不知道有没有什么好的算法,望大神帮忙,或指点一二,做好基于php。


解决方案1:

查询的时候,全部查询出来,只对order进行排序

一次遍历构造数组

$data = array();
foreach ($rows as $r) {
    $data['item'][$r['id']] = $r;
    $data['parent'][$r['id']] = $r['pid'];
    $data['children'][$r['pid']][] = $r['id'];
}

使用的时候一般遍历data['children'][当前需要遍历的父ID],再通过data['item'][当前ID]找到指定的条目

求不遇见喷子

解决方案2:

我有个思路,从数据库获取数据时,根据 parentid和order排序, order by parentid asc ,order asc

获取到所有数据在到php里一个循环:
foreach( $list as $v){
$tmp[$v['parentid']][] = $v;
}
这样是排好序的,有子集的根节点
这时候再来一个递归,将根节点加入就行了

解决方案3:

数据结构:为所有顶级分类设置一个虚拟的父分类,然后每个分类有一个指向其已序子分类数组的引用。
排序操作:在每个节点上执行获取所有子分类并排序后保存到一个数组中的操作。

如果非得要放在同一个数组中,那就在排序完成以后再把结果按顺序放到一个数组里。
当然,我还是建议修改读取数组的方法,让它能够解析树形结构。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 这个选择排序的问题在哪里,帮我看一下
  • 关于排序的问题

相关文章

  • 2017-06-07 是否支持在删除一个m3u8文件时,自动删除与之相关的所有切片?
  • 2017-06-07 flask自定义URL转换器
  • 2017-06-07 mac1011phpize报错问题
  • 2017-06-07 api支付接口api接口使用https协议是否安全性很高了?
  • 2017-06-07 wordpress七牛云存储插件问题
  • 2017-06-07 怎么保护API接口只给特定的客户端使用?
  • 2017-06-07 laravelphpartisan乱码
  • 2017-06-07 菜鸟新接触Python,好多疑问求解答
  • 2017-06-07 mac环境出问题了,求大神指教
  • 2017-06-07 flask-login如何管理多登录

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • (flask)HttpCache-Control,http头部已经设置了
    • Android中把通信口令放到Application扩展类中并设置为public安全吗?
    • 在nodejs+redis中,如何存储嵌套json数据和读取嵌套json数据?
    • 递归的代码改成非递归
    • 关于程序结构,goto等
    • gosdk上传填写callback的参数报错
    • (python)jsonpcallback的一串数字是如何生成的?
    • Python的ORM:Peewee定义的models如何一次性创建所有表?
    • 汇编新手遇到问题求大神帮忙解决
    • vs2008的c++下嵌入Python报错,新手求指教

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有