Sort的三参数⽤法
通俗说明⽤法:
c++中的sort函数⼀般⽤来对数组进⾏排序,有三个参数,第⼀个参数是是数组的起始位⼦,第⼆个参数为你要排序的数组的终⽌位⼦。第三个参数⼀般是排序的条件,可以通过这个参数达到各种各样的排序(后⾯再讲),也可以不写,默认是升序。
如:int arr[5]={1,3,2,5,4}. 操作:sort(arr,arr+5). 结果{1,2,3,4,5} //默认升序
如: int arr[5]={1,3,2,5,3}. 操作:sort(arr,arr+3) 结果{1,2,3,5,4} //对数组可以部分操作
这⾥我对第三个参数进⾏详细解释:第三个参数可以是⼀个函数,如果该函数返回为真,就将操作对象位⼦不变,否则交换位⼦(后⾯有例⼦)。我们可以通过调整该函数的内容来控制,当某个条件满⾜时返回值的真假。
如:例如⼀个数组{32,3}这两个数如何拼接组合达到的数最⼩,两种情况323,332。显然323⼩。这类问题可以⽤sort来进⾏操作。
代码如下:
int arr[3]={3,32,321} // 组成最⼩数是321323
sort(arr,arr+3,cmp). //对数组三个位⼦进⾏操作,条件是cmp函数,⼀般是bool类型函数
static bool cmp(int a, int b)
{
string A = to_string(a)+to_string(b);
string B =to_string(b)+to_string(a);
return A<B;
}sort函数 js
//函数的意思是sort函数操作的对象数组中两个挨着的顺序的元素,分别赋值到a和b上。通过⼀系列操作,满⾜条件某个条件(题中条件是A<B),返回如果真,两个数顺序不变,如果返回假,两个元素交换位⼦。
详细解读上⾯得到最⼩值321323的过程:
从sort函数开始,将数组前两个值3,32丢⼊cmp中。即a=3,b=32.先将a和b转换成字符串
再拼接故A=“332” B=“323” 故return A<B这个条件是假值,sort函数将这两个值的位⼦交换。此时arr={32,3,321}.
接下来类似操作依次得到结果是:
arr={32,321,3}
arr={321,32,3}。
将上述数组遍历输出及得到结果。(到这⾥sort内容讲完)
上述例⼦来⾃剑指 offer:(有兴趣可以去刷⼀刷)
题⽬如下:输⼊⼀个正整数数组,把数组⾥所有数字拼接起来排成⼀个数,打印能拼接出的所有数字中最⼩的⼀个。例如输⼊数组
{3,32,321},则打印出这三个数字能排成的最⼩数字为321323。
解答代码如下:
class Solution {
public:
string PrintMinNumber(vector<int> numbers){
int len = numbers.size();
if(len ==0)return “”;
sort(numbers.begin(), d(), cmp);
string res;
for(int i =0; i < len; i++){
res +=to_string(numbers[i]);
}
return res;
}
static bool cmp(int a,int b){
string A =to_string(a)+to_string(b);
string B =to_string(b)+to_string(a);
return A < B;
}
};
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论