cv sort函数_C++里sort浅解

sort()的使用方法为sort(begin,end),在一般的编程之中可以直接带入容器的begin()和end()函数来对,容器进行遍历。其函数包含在头文件中,其组成方面主要有两中排序方法(1)插入排序(2)快速排序。STL中定义了一个SORT_MAX变量来进行判断,如果大于SORT_MAX就使用快排,否则使用插排。

(1)插入排序

插入排序的顺序如下,即按照顺序,从第一个数开始向后面依次遍历,寻找后面的元素在前面元素的位置,然后将数字插入进去,所以很容易知道插入排序的时间复杂度为O(n^2)次方,其实现程序如下:

void Insert_Sort(int *num,int n){

int tmp=0;

for(int i=0;i

tmp=num[i];

int j=i-1;

while(j>=0&&tmp

num[j+1]=num[j];

j--;

}

num[j+1]=tmp;

}

}

(2)快速排序

快速排序是一种对于冒泡排序的方法的一种改进,冒泡排序是将两个相邻元素进行交换,而快速排序在此基础上使用了二分法对数组进行操作,确定一个基数的位置,然后对基数右侧的都是比基数大的数字,而左侧都是比它小的数字,然后再进行递归排序。但快速排序并不是一个稳定的排序的方法,其时间复杂度并不是确定的,其平均排序时间复杂度为O(nlogn),但当情况特殊时,其最差的时间复杂度为O(n^2)和冒泡排序相同,其基本排序的规则如下:

int a[101]

void Quicks_Sort(int begin,int end){//带入开始位置和结束位置

if(begin>end)//若开始大于结束

return;

int tmp=a[begin];//确定基数

int i=begin;

int j=end;

while(i!=j){

while(a[j]>=tmp&&j>i)//寻找比基数小的数

j--;

while(a[i]<=tmp&&j>i)//寻找比基数大的数

i++;

if(j>i){//交换两者

int t=a[i];

a[i]=a[j];

a[j]=t;

}

}

a[begin]=a[i];//交换基数和其位置

a[i]=tmp;

Qiicks_Sort(begin,i-1);//左侧迭代

Qicks_Sort(i+1,end);//右侧迭代

}

原文链接:https://blog.csdn.net/u010404530/article/details/79613979

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值