首页 > 编程知识 正文

归并排序和快速排序,快速排序算法时间复杂度分析

时间:2023-05-05 09:23:42 阅读:168382 作者:216

本文共享了JS快速排序的具体代码。 请作为参考。 具体内容如下

说明

时间复杂性是指执行算法所需的时间

区域复杂性是指运行程序所需的内存大小

所谓稳定,在a=b的情况下,意味着a在b的前面,排序后a也在b的前面

不稳定是指如果a=b,且a在b之前,则排序后可能会调换位置

-js快速排序-

原理

从数组中选择基数,将数组中的每个项目与此基数进行比较,小的放入新数组中,大的放入另一个新数组中。 然后,用这样的方法操作新数组。 所有子集只剩下一个元素,直到排序完成。

时间复杂性、空间复杂性和稳定性

平均时间复杂度o(nlogn ) )。

最佳情况o(nlogn )。

最坏的情况是o(n*n ) ) ) ) ) ) ) ) )。

空间复杂度o(logn ) )。

稳定性:不稳定

快速排序的写法

varexamplearr=[ 8,94,15,88,55,76,21,39 ];

功能fastsort {

if(ARR.Length2) {

返回区域;

}

var left=[];

var right=[];

varpivotindex=math.floor (arr.length/2 );

varpivot=arr.splice(pivotindex,1 ) [0];

for(I=0; I

if(ARR[I] )

lft.push(ARR[I] );

}else{

right.push(ARR[I] ) ) ) ) ) ) ) ) ) )。

}

}

returnfastsort(left ).concat [ pivot ],fastsort ) right );

}

console.log(fastsort ) examplearr );

分析

pivotIndex是数组长度除以2后四舍五入的值,数组长度会减半,因此最后的值为0

pivot利用splice方法从数组中取得基数

以上是本文的全部内容,希望对大家的学习有帮助。 另外,我希望你能多多支持编剧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。