实战练习题
-
升序和降序结合排序 编写一个函数,接收一个包含正数和负数的表(例如{5, -3, 8, -1, 2} ),首先将所有正数按升序排列,然后将所有负数按降序排列,要求正数排在前,负数排在后,排序后的表应为:{2, 5, 8, -1, -3}
-
按字符串字母顺序和长度混合排序 对一个字符串表(例如 {"apple", "kiwi", "book", "active"})进行排序,要求按照字母顺序升序排列,遇到字符串长度相同的情况下,则按长度降序排列。编写代码实现该排序。
-
使用自定义比较函数实现自定义优先级排序 编写一个排序函数,将包含数值和字符串的混合表(例如 {5, "apple", 3, "banana", 8})按照以下规则排序:
- 数值排在字符串之前
- 数值按升序排序
- 字符串按字母顺序排列
-
对嵌套表排序 给定一个包含嵌套表的表(例如 {{name="Alice", score=90}, {name="Bob", score=85}, {name="Charlie", score=90}}),请编写代码按以下规则进行排序:
- 先按 score 从高到低排序
- 如果分数相同,则按 name 的字母顺序排序
-
对具有多种键值的数据进行排序 编写一个函数,接收一个学生成绩表(例如 {{name="Alice", math=90, english=85}, {name="Bob", math=85, english=92}, {name="Charlie", math=85, english=85}}),要求按以下规则排序:
- 先按 math 分数从高到低排序
- 如果 math 分数相同,再按 english 分数从高到低排序
- 如果 english 分数也相同,再按 name 的字母顺序升序排列
-
稳定排序实现 在 Lua 4.0 中使用 sort 函数并不稳定,请实现一个基于插入排序的稳定排序函数,并对下列表进行排序:local items = {{value=3}, {value=1}, {value=3}, {value=2}} 确保在排序相同 value 的元素时,它们的相对顺序保持不变。
-
带过滤的排序 给定一个包含多个整数的表(例如 {5, -1, 0, 7, -3, 2} ),编写一个函数,首先过滤掉所有负数,然后对剩下的正数和零进行升序排序。最终的结果应该是:{0, 2, 5, 7}
-
根据自定义规则对混合类型表排序 编写代码对包含字符串和数值的混合表(例如 {3, "banana", 5, "apple", "grape", 2})进行排序,按以下规则:
- 字符串按照长度排序,长度相同的按字母顺序排列
- 数值按降序排序
- 数值排在字符串之前
-
排序员工列表 给定一个包含员工信息的表(例如 {{name="Alice", age=30, salary=4000}, {name="Bob", age=25, salary=4000}, {name="Charlie", age=25, salary=5000}}),请编写代码进行以下排序:
- 先按 salary 从高到低排序
- 如果 salary 相同,则按 age 从小到大排序
- 如果 age 也相同,则按 name 的字母顺序排列
-
处理含缺失值的表排序 给定一个包含可能有 nil 值的表(例如 {5, nil, 3, 7, nil, 2}),请编写代码,忽略 nil 值并对其他数值进行升序排序。最终结果为:{2, 3, 5, 7}
|