一个数组排序的函数 请问哪种方法更符合使用习惯
最近打算实现一个对数组进行局部排序(即只排序其中一部分)的函数
但在接口设计上存在诸多选项 不知道哪个更符合使用习惯
经验人士请看:
// 看似是国际惯例
// 只排序从InBegin 到 InEnd之前的元素(注:第InEnd号元素不在排序范围内)
1) void SortIntRange(int InArray[], int InBegin, int InEnd);
// 排序从InFirst到InLast号的元素(注:第InLast号元素在排序范围内)
2)void SortIntRange(int InArray[], int InFirst, int InLast);
这两个接口的区别在于最后一个参数的使用上
之前看过的不少程序都习惯用1) 我不明白为什么会这么流行 但我个人感觉不够直观
我个人更倾向实现2)但是不知道符不符合常规
请资深人士帮忙鉴定下 谢谢
[解决办法]
我是菜鸟。。。习惯1 帮顶。。打酱油。。
[解决办法]
显然是Begin和End更为直观!
[解决办法]
只排序从InBegin 到 InEnd之前的元素
1) void SortIntRange(int InArray[], int InBegin, int InEnd);
可以只对前面的排序,当数量很大的时候,就减少对后面数据的排序了,也能满足所有都排序
而第二种只能从头到尾排序
[解决办法]
void SortIntRange(int * begin, int * end);
[解决办法]
看看STL中 begin-end 与 front-back的区别,再看看他们的作用
[解决办法]
http://blog.csdn.net/wonderful_ha/article/details/6834226
[解决办法]
因为这样做可以避免一种意外情况,就是不小心把数组的元素数当作Last的号传了进去。
因为C语言的数组是从0开始计数的,所以后一种情况如果忘记检查就有可能出现违规访问。前一种稍微安全一点。
[解决办法]
http://blog.csdn.net/wonderful_ha/article/details/6834226