冒泡排序和快速排序对比,为什么反复调用函数的快排更快

快速排序,说白了就是给基准数据找其正确索引位置的过程.
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序每次只排序一个元素(通常是最末尾的),因此一万个元素第一次需要比较 9999 次,第二个元素需要比较 9998 个,以此类推,总共需要比较 1+2+3+...+9999 次。
快速排序第一次也需要比较 9999 次,但是因为其将数组分成两部分,一次快速排序分别调用两次快速排序,因此调用的两次快速排序在调用
时,都需要 4999 次的比较,故其规律是 1X9999+2X4999+4X2999+...+10000X1
通过比较可以发现,快速排序的相比于冒泡排序,比较的次数要少很多
当然,快速的代价就是不稳定,所谓排序的稳定性,就是指在排序过程中,在对a关键字排序后会不会改变其他关键字的顺序。
在比较有相同关键字序列的情况下,稳定的排序会将较早出现的元素排在前面,而不会是后面。

你可能感兴趣的:(冒泡排序和快速排序对比,为什么反复调用函数的快排更快)