javascript快速排序算法的详细解决方案

javascript快速排序算法的详细解决方案
快速排序是对冒泡排序的一种改进。行程将两部分排序的数据到独立的,所有的数据都比另一部分数据是一小部分,然后根据数据的两部分的方法进行快速排序,排序的过程可以进行递归,最终实现数据转换成一个有序序列。

假定要排序的数组是一个{ 0 }…{ },首先选择任何数据(通常是第一个数组数)作为基准数据,然后把所有较小的数放在前面,所有较大的数字都放在它后面。这个过程被称为快速排序,值得注意的是,快速排序不是一种稳定的排序算法,也就是说,在算法结束时,多个相同值的相对位置可能会发生变化。

一种快速排序算法:

1)将两个变量设置为低,高,排序开始:低= 0,高= n-1;

2)以第一个数组元素作为基准数据,将值赋给基,即,基={ 0 };

3)从高开始搜索前进,也就是说,然后开始向前搜索(高-),找到第一个小于基数的值,{ { },然后交换{高}和{低};

4)从低开始向后搜索,即从前向向后搜索(低+搜索),查找第一个大于基的{ },然后交换{低}和{高};

5)重复第三,第四步直到低=高;

复制代码代码如下所示:

函数分区(元素,低,高){

第一个元素的左侧作为默认的引用元素

var =元素{ { };

而(低<高){

从文章中向前搜索,直到找到比引用元素小的元素,然后交换。

虽然(低=基本)高-;

无功swap1 =元素{低} { } =元素;元素低{高} { } = swap1元素高;

通过下一个搜索,直到找到元素,而不是引用元素,然后交换。

当(低高度<元素{低} =基础)低+;

无功swap2 =元素{低} { } =元素;元素低{高} { } = swap2元素高;

}

返回作为分割和位置的元素的基位置。

收益低;

}

函数排序(元素,低,高){

如果(低<高){

序列被划分为序列分割,一个分成两个,位置,在序列值小于分裂位置之前,在分裂位置大于序列之后。

无功partitionpos =分区(元素、低、高);

继续排序在递归序列之前

排序(元素、0、partitionpos-1);

递归排序的序列为

排序(元素、partitionpos + 1,高);

}

}

var元素= { 3, 1, 5、7, 2, 4、9, 6, 10、8 };

console.log(在:+元素);

排序(元素、0元素。length-1);

console.log(':' +元素);
效率:

时间复杂度:最好的:O(Nlog2N),最差的:O(n ^ 2),平均O(Nlog2N)。

空间复杂度:O(Nlog2N)。

稳定性:不稳定。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部