javascript算法

404NotFound
• 阅读 1415

快速排序

快速排序的原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

let arr = [85, 24, 63, 45, 77, 17, 31, 96, 50]
function quickSort (sortArr) {
  if (sortArr.length <= 1) return sortArr // 如果筛选数组只有一个元素就直接return
  let currentIndex = Math.round(sortArr.length - 1) // 生成数组随机索引
  let currentVal = sortArr.splice(currentIndex, 1)[0] // 找出随机元素
  let left = [], // 存放比当前元素小的值
  right = [] // 存放比当前元素大的值
  for (let i = 0;i < sortArr.length; i++) {
    if (sortArr[i] > currentVal) {
      right.push(sortArr[i])
    } else {
      left.push(sortArr[i])
    }
  }
  // 
  return quickSort(left).concat([currentVal], quickSort(right))
}
let result = quickSort(arr)

冒泡排序

function sort (sortArr) {
  for (let i = 0; i < sortArr.length; i++) {
    for (let j = i + 1; j < sortArr.length; j++) {
      if (sortArr[i] > sortArr[j]) {
        let temp = sortArr[i]
        sortArr[i] = sortArr[j]
        sortArr[j] = temp
      }
    }
  }
  return sortArr
}
let arr = [85, 24, 63, 45, 77, 17, 31, 96, 50]
let result = sort(arr)

找出数组中最大的数

function findMax(arr) {
  let maxVal = 0
  arr.forEach(element => {
    if (element > maxVal) {
      maxVal = element
    }
  })
  return maxVal
}
let arr = [85, 24, 63, 45, 77, 17, 31, 96, 50]
let result = findMax(arr)

翻转字符串

function reverseString(str) {
  return str.split('').reverse().join('')
}
let strings = '来吧来吧相约一九九八'
let result = reverseString(strings)
点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
4年前
java.lang.Comparable
Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的_自然排序_,类的compareTo方法被称为它的_自然比较方法_。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
威尔we 威尔we
4年前
golang 之快速排序
1、快速排序稳定性快速排序是不稳定的算法,它不满足稳定算法的定义。算法稳定性假设在数列中存在aiaj,若在排序之前,ai在aj前面;并且排序之后,ai仍然在aj前面。则这个排序算法是稳定的!2、快速排序
徐小夕 徐小夕
5年前
程序员必备的几种常见排序算法和搜索算法总结
前言最近为了巩固一下自己的算法基础,又把算法书里的基本算法刷了一遍,特地总结一下前端工程师需要了解的排序算法和搜索算法知识,虽然还有很多高深算法需要了解,但是基础还是要好好巩固一下的.本文将以图文的形式为大家介绍如下算法知识,希望在读完之后大家能有所收获:冒泡排序及其优化选择排序插入排序归并排序快速排序顺序搜索二分搜索
Stella981 Stella981
4年前
C语言 快速排序 Quick Sort
算法描述:快速排序一般是选择数组的第一个数据为对称轴参考值pivot。按照大小数组分割成左右两个区间。然后对左右两个区间再进行递归排序,知道结束为止。例子演示:数组:43251,长度:5,对称轴参考值选择第一个数据4。比它小的我们放到它的右边,比它大的我们放到左边。设置左右两个工作位置。指向开头和末尾。第一轮:4325
Wesley13 Wesley13
4年前
PHP算法:冒泡排序与快速排序
写一个排序算法,可以是冒泡排序或者快速排序,假设待排序对象是一个二维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)//冒泡排序<brfunctionbubble_sort($array)
{
&nbsp;&nbsp;<br$countcount($array);
&nbsp;&nb
Wesley13 Wesley13
4年前
mysql 数据库group by 按排序取值
mysql数据库groupby按排序取值 mysql5.7以后,groupby想要按照排序的顺序来取值,在子结果集中要有union,groupby等操作,不然按照id默认排序来取值示例:数据库:score表id user\_id num1 100     952 100     963
Wesley13 Wesley13
4年前
C++经典算法题
41.AlgorithmGossip:基数排序法说明在之前所介绍过的排序方法,都是属于「比较性」的排序法,也就是每次排序时,都是比较整个键值的大小以进行排序。这边所要介绍的「基数排序法」(radixsort)则是属于「分配式排序」(distributionsort),基数排序
Wesley13 Wesley13
4年前
PHP快速排序(原地切分)
        快速排序是一种分治的排序算法,采用递归的思想,将数组元素分为两部分,选择切分元素,左右扫描数组,将大于切分元素的数据放在右边,小于切分元素的数据放在左边,直到扫描指针相遇,切分结束,同时递归调用,直到数组有序。      代码如下:<?phpfunctionquick_sort(array&$array,$l
菜园前端 菜园前端
2年前
什么是归并排序?
原文链接:什么是归并排序(mergeSort)?主要分成两部分实现,分、合操作:分:把数组分成两半,在递归地对子数组进行"分"操作,直到分成一个个单独的数合:把两个数组合并为有序数组,再对有序数组进行合并,直到全部子数组合并为一个完整数组归并排序就是采用了
菜园前端 菜园前端
2年前
什么是快速排序?
原文链接:什么是快速排序(quickSort)?主要分成两部分实现,分区、递归操作。分区从数组中任意选择一个"基准",所有比基准小的元素放在基准前面,比基准大的元素放在基本后面。递归递归地对基准前后的子数组进行分区。算法步骤1.首先获取数组的第一个值(作为