正如标题所说。我有2个功能。一种按升序排序,另一种按降序排序。我在C ++中。因此,为了将它们组合在一起,我将标志设置为一个变量,如图所示。但是我发现这只是重复代码。你们可以提出任何有效的建议。?
void insertionSort(int *arr , int size,int flag)
{
int j = 1,key ,i;
if(flag)
{
for(j;j<size;++j)
{
key = arr[j];
i = j-1;
while(arr[i]<key && i >=0)
{
arr[i+1] = arr[i];
i = i-1;
}
arr[i+1]= key;
}
}
else{
for(j;j<size;++j)
{
key = arr[j];
i = j-1;
while(arr[i]>key && i >=0)
{
arr[i+1] = arr[i];
i = i-1;
}
arr[i+1]= key;
}
}
// return arr;
}```
类似于C的简单方法:将flag
标准化为1
或0
,然后将其与比较结果进行异或运算,以仅在设置了flag
时才翻转比较。