按名称或计数排序多维数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按名称或计数排序多维数组相关的知识,希望对你有一定的参考价值。
Sort multidimesional array using qsort
fn sortByNameOrCount arr1 arr2 type: maxtomin: = ( local first, second case type of ( (#name): (first = arr1[1] ; second = arr2[1]) (#count): (first = arr1[2].count ; second = arr2[2].count) ) case of ( (first < second): if not maxtomin then -1 else 1 (first > second): if not maxtomin then 1 else -1 default:0 ) ) --example_#1 (sort by name alphabetically from Z to A) multiArr = #(#("Branko",#(1,2,3,4)), #("John",#(1)), #("Richard",#(1,2,3)), #("Stalone",#(1,2,3,4,5)), #("Michael",#(1,2))) qsort multiArr sortByNameOrCount type:#name maxtomin:true multiArr --result: #(#("Stalone", #(1, 2, 3, 4, 5)), #("Richard", #(1, 2, 3)), #("Michael", #(1, 2)), #("John", #(1)), #("Branko", #(1, 2, 3, 4))) --example_#2 (sort by name alphabetically from A to Z) multiArr = #(#("Branko",#(1,2,3,4)), #("John",#(1)), #("Richard",#(1,2,3)), #("Stalone",#(1,2,3,4,5)), #("Michael",#(1,2))) qsort multiArr sortByNameOrCount type:#name maxtomin:false multiArr --result: #(#("Branko", #(1, 2, 3, 4)), #("John", #(1)), #("Michael", #(1, 2)), #("Richard", #(1, 2, 3)), #("Stalone", #(1, 2, 3, 4, 5))) --example_#3 (sort by array count from max to min) multiArr = #(#("Branko",#(1,2,3,4)), #("John",#(1)), #("Richard",#(1,2,3)), #("Stalone",#(1,2,3,4,5)), #("Michael",#(1,2))) qsort multiArr sortByNameOrCount type:#count maxtomin:true multiArr --result:#(#("Stalone", #(1, 2, 3, 4, 5)), #("Branko", #(1, 2, 3, 4)), #("Richard", #(1, 2, 3)), #("Michael", #(1, 2)), #("John", #(1))) --example_#4 (sort by array count from min to max) multiArr = #(#("Branko",#(1,2,3,4)), #("John",#(1)), #("Richard",#(1,2,3)), #("Stalone",#(1,2,3,4,5)), #("Michael",#(1,2))) qsort multiArr sortByNameOrCount type:#count maxtomin:false multiArr --result:#(#("John", #(1)), #("Michael", #(1, 2)), #("Richard", #(1, 2, 3)), #("Branko", #(1, 2, 3, 4)), #("Stalone", #(1, 2, 3, 4, 5)))
以上是关于按名称或计数排序多维数组的主要内容,如果未能解决你的问题,请参考以下文章