a.Quick sort quickSort<- function(arr) { random_index<- sample(seq_along(arr), 1); pivot <- arr[random_index] arr<- arr[-random_index] left <- c() right <- c() left<-arr[which(arr<= pivot)] right<-arr[which(arr> pivot)] if (length(left) > 1) { left <- quickSort(left) } if (length(right) > 1) right <- quickSort(right) } return(c(left, pivot, right)) } arr<- sample(1:100, 10) print("before sorting") print(arr) result <- quickSort(arr) print("after sorting") print(result) b.Binary search tree library(R6) Node <- R6Class( classname = 'Node', public = list( val = NULL, left = NULL, right = NULL, initialize = function(val = NULL, left = NULL, right = NULL){ selfSval <- val selfSleft <- left selfSright <- right } BST <-R6Class( classname = 'BST', public = list( root = NULL, #node = NULL, node=NULL, insert = function(data) { if(is.null(self$root)) { selfSnode <- NodeSnew(data) }else{ selfSinsert_recur(data, selfSroot) } insert_recur = function(data, cur_node){ if(data cur_node$val) { if(is.null(cur_node$self)){ cur_node$left <- Node$new(data) }else{ insert_recur(data, cur_node$left) }else if(data > cur_node$val) { if(is.null(cur_node$self)){ cur_nodeSright <- Node$new(data) }else{ insert_recur(data, cur_nodeSright) } }else{ print('value already in tree') }. get_height = function(cur_node){ if(is.null(cur_node$val)){ return(-1) }else{ return(max(selfSget_height(cur_node$left), selfSget_height(cur_node$right))+1) ) ) print(bst <- BST$new()) print(bst$insert(3)) print(bst$insert(2)) print(bstSinsert(1)) print(bst$insert(5)) print(bst$insert(6)) print(bst$get_height(bst$root)) print(bst$get_height(bst$rootSright)) print(bstSroot) print(bst$rootSleft) print(bst$rootSright) print(bst$rootSleft$left) print(bst$rootSleft$right)