首页 > 其他分享 >部分排序

部分排序

时间:2023-02-06 00:34:02浏览次数:34  
标签:const len start let array 排序 部分 cv

给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。

/**
 * @param {number[]} array
 * @return {number[]}
 */
const subSort = (array = [5,3,1,7,9]) => {
    const len = array.length
    let start = 0
    let end = 0
    for(let i = 0; i < len - 1; i++){
        const cv = array[i], nv = array[i + 1]
        if(cv > nv){
           start = i
           break
        }
    }
    for(let i = len - 1; i > 0; i--){
        const cv = array[i], nv = array[i - 1]
        if(cv < nv){
           end = i
           break
        }
    }
    if(start === 0 && end === 0) return [-1, -1]
    const sliceArray = array.slice(start, end + 1)
    const min = Math.min(...sliceArray)
    const max = Math.max(...sliceArray)
    const res = []
    for(let i = 0; i < len - 1; i++){
        if(array[i] > min){
            res.push(i)
            break
        }
    }
    for(let i = len - 1; i > - 1; i--){
        if(array[i] < max){
            res.push(i)
            break
        }
    }
    return res
};

  

标签:const,len,start,let,array,排序,部分,cv
From: https://www.cnblogs.com/zhenjianyu/p/17094255.html

相关文章

  • drf之分页,过滤,排序
    #4.过滤Filtering对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。```pipinstalldjango-filter```settings.py,代码:```p......
  • 算法导论:堆排序
    维护堆主要思想比较\(A[i],A[Left(i)]\)和\(A[Right(i)]\)的大小如果\(A[i]\)不是最大的,则将其与比较大的孩子节点进行交换在堆中继续向下比较和交换,直到\(i......
  • python 排序的几种方式
     #python排序的方法#Python列表有一个内置的list.sort()方法可以直接修改列表list1=[1,3,5,10,2,1]list1.sort()print(list1)list1=[1,3,5,10,2,1]list......
  • 反序列化类校验部分源码解析 断言 drf之请求 drf之响应 视图组件介绍及两个视图基类
    反序列化类校验部分源码解析(了解)断言drf之请求drf之响应视图组件介绍及两个视图基类基于GenericAPIView+5个视图扩展类昨日内容回顾#1序列化类的......
  • 反序列化类校验部分源码解析、断言、 drf之请求、 drf之响应、视图组件介绍及两个视图
    反序列化类校验部分源码解析、断言、drf之请求、drf之响应、视图组件介绍及两个视图基类、基于GenericAPIView+5个视图扩展类反序列化类校验部分源码解析(了解)#反序列......
  • 希尔排序
    #include<iostream>usingnamespacestd;/***希尔排序*希尔排序是插入排序的的改进*改进的主要思想是:*1.插入排序对于小规模数组效率较高*......
  • 俩猴排序
    众所周知,猴子排序的原理是打乱序列,然后判断是否有序。可以看到,猴子排序的时间复杂度为\(\Omega(n),O(?)\)。通常打乱序列的方式为:for(inti=0;i<n;++i){ swap......
  • 5.3虚拟内存把磁盘作为部分内存来使用
    接下来说一下虚拟内存虚拟内存是指把磁盘的一部分作为假想的内存来使用。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)。通过借助虚拟......
  • 排序
    排序1.冒泡排序1.对于一个数组,比较所有的相邻的元素,如果第一个大于第二个,则交换2.比较一轮下来,可以保证一个元素是有序的3.在比较n-1轮,整个数组就排序好了代码......
  • 《人工智能:线代方法》 第二部分问题求解 通过搜索进行问题求解(4) 启发式函数
    《人工智能:线代方法》第二部分问题求解通过搜索进行问题求解(4)3.6启发式函数启发式函数h(n)告诉A*从任意结点n到目标结点的最小代价评估值。选择一个好的启发式函数......