R语言实现常用算法

本文深入探讨了选择排序、冒泡排序、快速排序三种排序算法,并详细介绍了二分查找方法,提供了完整的代码实现和核心原理解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


# 选择排序
@ auther: wangcaixia
selectSort <- function(arr){
  len <- length(arr)
  if(len <= 1) return(arr)

  for(i in 1:(len-1) ){
    for (j in (i+1):len ) {
      if (arr[i] < arr[j]) {
        tmp <- arr[i]
        arr[i] <- arr[j]
        arr[j] <- tmp
      }
    }
  }
  return(arr)
}


# 冒泡排序
@ auther: wangcaixia
bubbleSort <- function(arr){
  len <- length(arr)
  if(len <= 1) return(arr)

  for(i in 1:(len-1) ){
    for (j in 1:(len-i) ) {
      if (arr[j] > arr[j+1]) {
        tmp <- arr[j]
        arr[j] <- arr[j+1]
        arr[j+1] <- tmp
      }
    }
  }
  return(arr)
}


# 快速排序
@ auther: wangcaixia
quickSort <- function(x) {
    if(length(x) <= 1) return(x)
    pivot <- x[1]
    therest <- x[-1]
    sv1 <- therest[therest < pivot]
    sv2 <- therest[therest >= pivot]
    sv1 <- quickSort(sv1)
    sv2 <- quickSort(sv2)
    return(c(sv1,pivot,sv2))
}


# 二分查找
# @auther: wangcaixia
# @param: arr 从小到大排序的有序数组
# @param: aim 查找的目标元素
# @return: -1(没找到元素) 数组键值 
halfSearch <- function(arr, aim){
  lower <- 1
  high  <- length(arr)
  while(lower <= high){
    middle <- as.integer((lower+high)/2)
    if(arr[middle] > aim){
        high <- middle - 1
    } else if(arr[middle] < aim){
        lower <- middle + 1
    } else {
        return(middle)
    }
  }

  return(-1)
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值