Return to Snippet

Revision: 58469
at July 17, 2012 03:52 by barigazy


Initial Code
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)))

Initial URL


Initial Description
Sort multidimesional array using qsort

Initial Title
SORTING MULTIDIM ARRAY BY NAME OR BY COUNT

Initial Tags
sort, array

Initial Language
Maxscript