排序算法:Select 5 为列表中的最小值,0 为列表中的最大值

Sorting Algorithm: Select 5 as the smallest and 0 as the largest in a list

大家好,你们能帮我写一个比较函数,用于比较排序算法吗?这是标准函数,但是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; 
}

以下代码应该有效:

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;   
}

0永远比任何其他数字都高而上升到顶部,而5总是比任何其他数字都低并沉到底部。

编辑:首先检查数字是 5 还是 0。

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

此代码应该有效。

以下 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) );
}