【校招VIP】前端算法考察之排序

发布时间 2023-09-07 11:08:57作者: 校招VIP

考点介绍

不同的场景中,不同的排序算法执行效率不同;稳定:冒泡、插入、归并;不稳定:选择、快速、堆排序、希尔排序

答案详情解析和文章内容可点击下方链接即可查看

一、考点题目

1.使用js实现数组的快速排序

快速排序使用了冒泡+分治的思路。

每轮从数组中取出一个数作为基准;在排序过程中,小于或等于基准数的全部放到基准的左边,大于基准的全部放右边;再对左边和右边依次进行上面两步,直到间距为1……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function partition(arr,low,high){
 
    var key = arr[low];  //使用第一个元素作为分类依据
   while(low < high){
       while(low < high && arr[high] >= arr[key])
           high--;
       if(low > high){
          arr[low] = arr[high]; low++;
       }
       while(low < high && arr[low] <= arr[key])
           low++;
      if(low < high){
           arr[high] = arr[low]; right--;}
   }
   arr[low] = key;
   return low;
}
function qSort(arr,low,high){
   if(low < high){
       var partKey = partition(arr,low,high);
       qSort(arr,low, partKey - 1);
       qSort(arr,partKey + 1,high);
  }
}

2.判断下列说法是否正确:就排序算法平均所用的辅助空间而言,堆排序、快速排序、归并排序的大小关系是堆排序<快速排序<归并排序。()

A.正确

B.错误

正确答案是 A 堆的空间复杂度为1……

3.下列排序算法中,哪个是稳定的排序算法?

A.选择排序

B.快速排序

C.归并排序

D.希尔排序

正确答案是 C 选择排序在调整树的过程中改变节点的顺序导致不稳定,快排一个指针从前之后,一个从后至前,从后往前可能将多个小于基准数据的数原本先进入数组却放在了前面,归并算法采用的归并方式稳定的话就可以保证其稳定性,希尔排序是因为增量对不同组的顺序形成一种隔离,每个组内稳定,多个组在一起就不稳定……

二、考点文章

1.【校招VIP】高级排序:快速排序

快速排序是对冒泡排序的一种改进。

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

2.【校招VIP】三种常用高级排序-堆排序,归并排序,快速排序

堆排序

基本思路

a.将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;

b.将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;

c.重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序……

三、考点视频

前端校招的特点、考点和职业发展

前端是IT校招中目前性价比最高的职位,对所学专业要求不高,考点难度较小,且需求量大。校招时分为一二线公司和普通公司,所对应的校招要求、工资和职业发展都是有差别的……

移动端链接:https://m.xiaozhao.vip/dTopic/detail/1166

PC端链接:https://xiaozhao.vip/dTopic/detail/1166