常用算法-快速排序

发布时间:2023年12月24日

快速排序

时间复杂度:O(Nlog2N)
空间复杂度:O(N)
原理:

以第一个数为基数,前后两端分别记游标i,j,后端的游标j向前移动,大于基准数字继续j–,小于基准数字停下来,前端的游标i向后移动,小于基准数字继续i++,大于基准数字停下来,判断j>i则交换数字,否则推出循环
核心代码:
递归
分片区
int partition(vector &list,int start,int end)
{
int base = start;
while(start < end)
{
while(start < end&&list[end] >= list[base]) end–;
while(start < end&&list[start] <= list[base]) start++;
if(start < end) {swap(list[start],list[end]);}
}
swap(list[base],list[start]);
return start;
}
void quick(vector &list,int start,int end)
{
int base = partition(list,start,end);
quick(list,start,base-1);
quick(list,base+1,end);
}

文章来源:https://blog.csdn.net/ks_13815436529/article/details/135181265
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。