排序算法


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

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

 

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

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

排序算法

 

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

形式是简单的:

排序算法

 

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

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

1.  覆盖

  首先看while循环

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

  排序算法

 

2.  交换

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

  排序算法

 

 

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

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

其核心代码:

  先局部后全局。

  排序算法

 

 

堆排序:首先是建堆

  排序算法

 

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

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

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

  排序算法

 

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

  排序算法

 

 

 

  

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/281065.html

(0)
上一篇 2022年8月17日
下一篇 2022年8月17日

相关推荐

发表回复

登录后才能评论