Algorithm 排序算法:在列表中选择5作为最小值,选择0作为最大值

Algorithm 排序算法:在列表中选择5作为最小值,选择0作为最大值,algorithm,sorting,Algorithm,Sorting,嘿,伙计们,你们能帮我写一个比较函数,它将用于比较排序算法。这是标准函数,但必须将数字5视为最小值,0视为最大值 所以如果我们有这样的数据 0, 1, 5, 2, 3, 0, 1, 5, 4, 632, 0, 7 将被分类为 5, 5, 1, 1, 2, 3, 4, 7, 632, 0, 0, 0 这里是伪代码;没有特定的语言 int mycompar(int a, int b) { if (a > b) return 1; if (a < b) return -1

嘿,伙计们,你们能帮我写一个比较函数,它将用于比较排序算法。这是标准函数,但必须将数字5视为最小值,0视为最大值

所以如果我们有这样的数据

0, 1, 5, 2, 3, 0, 1, 5, 4, 632, 0, 7
将被分类为

5, 5, 1, 1, 2, 3, 4, 7, 632, 0, 0, 0
这里是伪代码;没有特定的语言

int mycompar(int a, int b) 
{ 
  if (a > b) return 1; 
  if (a < b) return -1; 
  if (a == b) return 0; 
}
intmycompar(inta,intb)
{ 
如果(a>b)返回1;
如果(a
以下代码应该可以工作:

int mycompar(int a, int b) 
{ 
  if (a==b) return 0;
  if (a==0 || b==5) return 1;
  if (a==5 || b==0) return -1;
  if (a>b) return 1; 
  if (a<b) return -1;   
}
intmycompar(inta,intb)
{ 
如果(a==b)返回0;
如果(a==0 | | b==5)返回1;
如果(a==5 | | b==0)返回-1;
如果(a>b)返回1;
如果(a)

此代码应该可以工作。

以下C代码可以工作:

int mycompar(int a, int b){
    int MAX = 5, MIN = 0;
    return ( a==MAX || b==MIN ? -1 : ( b==MAX || a==MIN ? 1 : a-b) );
}

你能解释一下你已经尝试了什么以及你遇到了什么问题吗?我们不能只回答你的家庭作业问题。:-)将此添加到你的ifs列表中:if(a==5)return-1;if(a==0)返回1;问一个简单的问题做得很好,每个人都错了,我们中的大多数人都会反复问。5的a是3的b是counter@RubixRechvin在OP的问题中,0高于5。我已经编辑了我的答案,现在应该可以了。a=1,b=5?它返回-1。@genisage您是对的,我已经编辑了我的答案,我将向上投票您的答案。
return(a>b)
返回一个
布尔值
,但您应该返回一个
int
int mycompar(int a, int b){
    int MAX = 5, MIN = 0;
    return ( a==MAX || b==MIN ? -1 : ( b==MAX || a==MIN ? 1 : a-b) );
}