Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package nstu.labs
- /**
- * Created by Александр on 29.04.2017.
- */
- class SortList[A] {
- var is_int = 0;
- def handle(a: Any): Unit = a match {
- case vs: Array[String] => println("strings: "); is_int = 0;
- case vs: Array[Int] => println("ints: "); is_int = 1;
- case _ =>
- }
- def mergeList(left: List[A], right: List[A]): List[A] =
- {
- (left, right) match {
- case(left, Nil) => left
- case(Nil, right) => right
- case(leftHead :: leftTail, rightHead :: rightTail) =>
- if (leftHead.toString.toInt < rightHead.toString.toInt) leftHead::mergeList(leftTail, right)
- else rightHead :: mergeList(left, rightTail)
- }
- }
- def process_sort(list: List[A]): List[A] = {
- val middle = list.length /2
- if (middle == 0) return list
- var (left, right) = list.splitAt(middle)
- println(list)
- println(f"left $left right $right")
- if(is_int == 1)
- return mergeList(process_sort(left), process_sort(right))
- else
- return list
- }
- def printList(args: List[_]): Unit = {
- args.foreach(println)
- }
- def pre_process_sort(array: Array[A], left_num : Int, right_num: Int): Array[A] = {
- if (left_num >= right_num)
- {
- println("Left must be less then right!")
- return array
- }
- else if(left_num < 0 || right_num < 0 || right_num > array.length - 1)
- {
- println("Some stupied numbers!")
- return array
- }
- handle(array)
- var buffered_array = array.slice(left_num, right_num)
- var list = buffered_array.toList
- var new_list = process_sort(list)
- printList(new_list)
- return array
- }
- }
- package nstu.labs
- object HelloWorld {
- def main(args:Array[String]) = {
- val ints = new SortList[Int]()
- var array = Array(1, 6, 4, 7, 8, 9, 10, 25 ,1 ,2, 3)
- // val ints = new SortList[Int]()
- // var array = Array("1", "6", "4", "7", "8", "9", "10", "25" ,"1" ,"2", "3")
- val sorted = ints.pre_process_sort(array, 1, 4)
- println("Hello, world!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
- //sorted.foreach((i: Int) => println(i))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement