代码之家  ›  专栏  ›  技术社区  ›  gavr

在vala中轻松排序默认数组

  •  1
  • gavr  · 技术社区  · 7 年前

    我这样试过,但不管用。我认为对数组进行排序的方法太复杂了。我需要类似System.Array.Sort()的C#

    int[] data = { 3, 9, 2, 7, 5 };
    var arr = new Array<int> ();
    arr.append_vals (data,data.length);
    
    arr.sort((a, b) => {
        return (int) (a > b) - (int) (a < b);
    });
    
    for (int i=0;i<arr.length;i++) {
        print(@"$(arr.index(i))\t");
    }
    

    同样尝试过,数组仍然没有排序。

    using Posix;
    int cmpfunc(ref int a, ref int b) {
        return (int) (a > b) - (int) (a < b);
    }
    void main() {
        int[] data = { 3, 9, 2, 7, 5 };
    
        Posix.qsort (data, data.length, sizeof(string), (Posix.compar_fn_t) cmpfunc);
        foreach (int st in data) {
            print(@"$st\t");
        }
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   apmasell    7 年前

    这个 Posix.qsort 函数需要知道数组中每个元素的大小, sizeof(int) 但是你给它一个不同类型的尺寸, sizeof(string) .