相关疑难解决方法(0)

在std :: sort()中使用哪种类型的排序?

任何人都可以告诉我std::sort()<algorithm>头文件中定义的函数中实现了哪种类型的排序技术(冒泡,插入,选择,快速,合并,计数......)?

c++ sorting stl

29
推荐指数
4
解决办法
6233
查看次数

快速排序3个值

我有一个三个浮点值的数组,我想按升序对它们进行排序(尽管任何排序算法的顺序都可以很容易地反转).调用std :: sort似乎有点矫枉过正:

float values[3] = {...};
std::sort(values, values + 3);
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

float sorted[3] = {min(values), values[0] + values[1] + values[2] -
    min(values) - max(values), max(values)};
Run Code Online (Sandbox Code Playgroud)

但这看起来很丑陋.添加和减去数字也可以改变中间排序元素的值.并且它不容易就地工作.也很有趣:

float sorted[3];
/*for(int i = 0; i < 3; ++ i) { // unroll
    sorted[(values[i] > values[0]) + (values[i] > values[1]) +
        (values[i] > values[2])] = values[i];
}*/ // this is broken, does not work if two or all values are equal
sorted[(values[0] > values[1]) + (values[0] > values[2])] = values[0];
sorted[(values[1] >= …
Run Code Online (Sandbox Code Playgroud)

c++ arrays sorting algorithm

7
推荐指数
1
解决办法
7862
查看次数

标签 统计

c++ ×2

sorting ×2

algorithm ×1

arrays ×1

stl ×1