言:
最近发现各种排序算法除了认识名字外,该忘记的不该忘记的都忘记了,所以还是得复习巩固。
原题如下:
给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。
返回该 最大总和 。
审题:
由题意数组大小为2的整数倍,结合示例将这些数据两两进行组合,取出每个组合中的最小值,将这些最小值相加使得和最大,返回这个最大总和。
思路:
结合上述示例,若数据有序:
最大总和: 偶数位置相加 1+3=4;
若数据有序:
最大总和: 偶数位置相加 1+2+6=9;
SO:
基于上述分析,本题关键点是对这组数据进行排序,在这里可以选择调用库中的排序方式,也可以自行设置排序算法。
我在这里选用快速排序的方式对数据进行排序,有关快排的知识,在我往期的文章中有详细的介绍,有兴趣的可以了解一下。
快速排序,详细介绍
代码实现:
//C实现:
int findPivotPos(int *array,