当前位置: 首页 > news >正文

cangjie仓颉程序设计-怎么排序(二)

文章目录

      • 数组排序
      • 自定义排序
      • 二维数组排序实例

本专栏还在持续更新: Cangjie仓颉程序设计-个人总结
这是双子专栏: 仓颉编程cangjie刷题录

数组排序

使用官方库 std.sort.*
该包中包含三种接口排序方式:

  • 升序排序:sort()
  • 降序排序:sortDescending()
  • 自定义排序:sortBy()

该包中包含两种函数排序方式, 默认从小到大排序:

  • 稳定排序:stableSort()
  • 不稳定排序:unstableSort()
import std.sort.*
main() {var arr = [3, 4, 9, 8, 2, 1]arr.sort()arr.sortDescending()stableSort(arr)unstableSort(arr)
}

自定义排序

自定义排序写法,使用sortBy接口。同样可以指定稳定或者不稳定。
书写格式如下,以从小到大排序为例:

import std.sort.*
main () {var arr = [3, 4, 9, 8, 2, 1]arr.sortBy() {a:Int, b:Int =>if (a < b) {return Ordering.LT} else if (a > b) {return Ordering.GT}return Ordering.EQ}
}

二维数组排序实例

import std.sort.*
import std.random.*main() {var buildings:Array<Array<Int>> = [[5,12,12],[15,20,10],[19,24,8],[2,9,10],[3,7,15]]buildings.sortBy(stable: true){ rht: Array<Int>, lft: Array<Int> =>var x = rht.sizefor (i in 0..x) {if (rht[i] < lft[i]) {return Ordering.LT} else if (rht[i] == lft[i]) {continue} else {return Ordering.GT}}return Ordering.EQ}for (arr in buildings) {for (x in arr) {print(x)print(' ')}println()}
}

结果

2 9 10 
3 7 15 
5 12 12 
15 20 10 
19 24 8 

http://www.mrgr.cn/news/64083.html

相关文章:

  • 在Ubuntu 上实现 JAR 包的自启动
  • 如何在Linux下部署自己的ZFile开源网盘
  • Blender进阶:着色器节点
  • 数据结构-顺序表(c语言)
  • EasyPlayer.js网页播放器,支持FLV、HLS、WebSocket、WebRTC、H.264/H.265、MP4、ts各种音视频流播放
  • java项目之协力服装厂服装生产管理系统的设计与实现(springboot)
  • 从头开始学PHP之面向对象
  • 2025生物发酵展(济南)为生物制造产业注入新活力共谱行业新篇章
  • 仓颉刷题录-二维数组(二)
  • 第15届蓝桥杯省赛真题剖析-2024年8月24日Scratch中级组
  • 使用Github下载YOLO v5项目教程
  • 面试题:JVM(六)
  • TOP级AI驱动的单元测试工具推荐
  • 自由学习记录(17)
  • c 到 c++ 过渡
  • Spring源码学习(三):finishBeanFactoryInitialization
  • 亚马逊降佣刺激印度市场,中小卖家利好消息,测评助力扬帆起航
  • YOLOv11改进策略【注意力机制篇】| CVPRW-2024 分层互补注意力混合层 H-RAMi 针对低质量图像的特征提取模块
  • 【算法+C#】重写HashCode,去重相同坐标的二维点
  • 全面解析 ESPnet:Aishell 项目深入指南
  • 2025院士增选高校候选人名单公布,医工交叉领域有这些专家需要重点关注!|24-11-02
  • 2-8软件包管理
  • 7、LVM逻辑卷详解
  • tmux查看的日志范围有限
  • Django 5企业级Web应用开发实战-日志
  • DNS服务器