网络公司,石家庄网络公司,石家庄做网站,石家庄网站优化,石家庄网站建设,石家庄专业网站设计,石家庄做网站哪家好

公司新闻Company News
当前位置: 首页 > 新闻资讯 > 公司新闻

石家庄网络公司告诉你快速排序算法

2020-03-06 13:05:50

     石家庄网络公司告诉你快速排序实现的重点在于数组的拆分,通常我们将数组的第一个元素定义为比较元素,然后将数组中小于比较元素的数放到左边,将大于比较元素的放到右边,

这样我们就将数组拆分成了左右两部分:小于比较元素的数组;大于比较元素的数组。我们再对这两个数组进行同样的拆分,直到拆分到不能再拆分,数组就自然而然地以升序排列了。

快速排序算法是冒泡排序的一种改进,快速排序也是通过逐渐消除待排序的无序序列中逆序元素来实现排序的

算法思想:

石家庄网络公司告诉你快速排序算法(图1)


(1)  我们从待排序的记录序列中选取一个记录(通常第一个)作为基准元素(称为key)key=arr[left],然后设置两个变量,left指向数列的最左部,right指向数据的最右部。

在这之前,我们先来分析下排序算法界里面的Hello World,其就是大名鼎鼎的冒泡排序,这个排序算法因为思想原理和实现都比较简单,所以大部分程序员都信手拈来,但真实情况是这个算法除了名字比较独特外,别的都不值一提,因为其排序的平均时间复杂度是O(n^2),所以在大数据排序时非常之慢。

下面我们用数学方式来推导冒泡排序时间复杂度是如何计算的:

首先冒泡排序是基于比较和交换的,比如我们要对n个数字排序,冒泡排序需要n-1次遍历,比如我们有10个数字,第一趟循环需要比较9次,第二趟循环需要比较8次,第三趟需要比较7次,以此类推,最后一趟需要1次比较。石家庄网络公司告诉你快速排序算法(图2)

f(10)=9+8+7+......+1 ,可以转为一个等差数列:

f(n)=(n-1)+(n-2)+(n-3)+......+1= (n-1)*n / 2 = 0.5n^2-0.5n

按照上篇文章中介绍的复杂度的渐近表示,忽略常数系数和第二项变数比较小的情况,冒泡复杂度就近似等于=O(n^2),当然这里是指平均情况。

标签:石家庄网络公司   石家庄网站优化公司

链接:www.shijiazhuangwangluogongsi.com