首页 > 编程语言 >排序算法

排序算法

时间:2022-08-17 01:11:40浏览次数:57  
标签:递归 建堆 调堆 快排 算法 排序 下沉

1.  排序算法面试中  面试高频又快排、堆排和归并排序

先说快排,快排体现的的思想是:分而治之,并且递归

 

怎么个分呢, 选第一个数进行强行将数据分成两拨。

此时需要一个函数强行分开。名字随便写一个

 

 这个方法是很重要的:(一般出问题的就是这个方法):

形式是简单的:

 

 就一个找middle,一个递归函数。(递归是不去用理解的,你只需要把它当成一个已经解决问题的方法就行了)

找middle有很多种方法(魔鬼在细节好可怕啊)

1.  覆盖

  首先看while循环

  覆盖的方法: 可以让 left = right出圈。   先从右边开始移动

  

 

2.  交换

  记住,在出while循环的时候,一定要让i > j ,如果 循环跑出来的是i==j 那么,当j最后是一个很大值的话,就出问题了

  

 

 

快排的思想感觉像是强制让每个元素找准自己的定位

归并排序:体现的是先分再合的思想。

其核心代码:

  先局部后全局。

  

 

 

堆排序:首先是建堆

  

 

   建堆的过程就是调堆,将小的值下沉,然后形成局部的最大堆,然后从底层一直向上走,就建成整体的最大堆。

  建立堆之后,将堆顶和最后一个值交换,然后调堆,让顶部的元素下沉。

  因此调堆的过程就是小元素下沉的过程,最重要的调堆,就是一个下沉,并且是递归下沉

  

 

   建堆就从最小的堆开始往上建堆:

  

 

 

 

  

 

标签:递归,建堆,调堆,快排,算法,排序,下沉
From: https://www.cnblogs.com/followers/p/16593523.html

相关文章

  • LeetCode 螺旋矩阵 II 算法题解 All In One
    LeetCode螺旋矩阵II算法题解AllInOnejs/ts生成螺旋矩阵螺旋矩阵原理图解动态赋值arr[i]//动态更新indexleti=0;while(left<=right&&t......
  • 【数据结构与算法】线性表——顺序表的实现
    顺序表的实现C++代码使用了模板。使用的时候直接导入头文件即可。代码实现相关细节、解释都在注释里了。那么就直接上代码了。//MySeqList.h文件#ifndef__MYSEQLIS......
  • 算法总结
    今天放几个关于字符串的算法题packagecom.chenghaixiang.jianzhi2.day11;importjava.util.*;/***@author程海翔*@school石家庄铁道大学*/publicclass......
  • 排序(王道考研,自用)
    插入排序,折半插入排序,希尔排序冒泡排序快速排序选择排序堆排序归并排序基数排序常考稳定:插入排序,折半插入排序,冒泡排序,归并排序,基数排序不稳定:希尔排序,选择排......
  • antd-vue table 表头同时存在sorter,Slots 排序升序失效“”解决“”
     产品给出的需求是这个客户数同时有提示跟升序于是乎我用了 Slots自定义表头但是发现排序只能降序无法升序 后来发现是排序的事件绑定到了自定义表头上面去了 ......
  • js插入排序
    **插入排序**插入排序主要是将需要排序的数组分为两部分,取第一个元素作为已排序数组,其余元素作为未排序数组,依次取未排序数组的元素和已排序数组中的元素进行对......
  • 算法-实验一
    算法设计与分析实验一第一题公元5世纪,我国古代数学家张丘建在他所撰写的《算经》中,提出了这样的一个问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、......
  • 常见算法
    基本查找publicclassA01_BasicSearchDemo1{  publicstaticvoidmain(String[]args){    //基本查找\顺序查找    //核心:    //从0索......
  • WebGPU的计算着色器实现冒泡排序
    大家好~本文使用WebGPU的计算着色器,实现了奇偶排序。奇偶排序是冒泡排序的并行版本,在1996年由JKornerup提出。它解除了每轮冒泡间的串行依赖以及每轮冒泡内部的串行依赖,......
  • mysql组内排序-rank()、dense_rank()、row_number()
    1.row_number():计算当前行在分区中的行数2.dense_rank():统计当前行所在分区的排名,排名是连续的,没有间隙,3.rank():统计当前行所在分区的排名,排名是非连续的,有间隙。4.......