首页 > 编程语言 > 详细

排序(2)

时间:2020-02-23 22:13:43      阅读:82      评论:0      收藏:0      [点我收藏+]

5、快速排序

基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,达到序列有序。

时间复杂度O(nlogn)  但是不稳定的排序。

#include<algorithm>

bool cmp(int a,int b)

{

return a<b;

}

int  main()

{

int a[10001];

……

sort(a,a+n,cmp)

6、归并排序

采用分治思想将序列分为若干个子序列,然后将子序列排序并合并

void msort(int s,int t)
{
if(s==t) return;
int mid=(s+t)/2;
msort(s,mid); //分解左左序列
msort(mid+1,t) //分解右左序列
int i=s,j=mid+1,k=s;
while(i<=mid&&j<=t)
{
if(a[i]<=a[j])
{
r[k]=a[i];k++;i++;
}
else
{
r[k]=a[j];k++;j++;
}
}
while(i<=mid)
{
r[k]=a[i];k++;i++;
}
while(j<=t)
{
r[k]=a[j];k++;j++;
}
for(int i=s;i<=t;i++) a[i]=r[i];
}

 

排序(2)

原文:https://www.cnblogs.com/zhaoxuelin/p/12354078.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!