我如何将递增和递减的排序函数组合到由标记vriable驱动的单个函数中?

问题描述 投票:0回答:1

正如标题所说。我有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++ performance sorting insertion-sort
1个回答
0
投票

类似于C的简单方法:将flag标准化为10,然后将其与比较结果进行异或运算,以仅在设置了flag时才翻转比较。

© www.soinside.com 2019 - 2024. All rights reserved.