Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在Vala中对默认数组进行排序的简单方法_Sorting_Vala - Fatal编程技术网

Sorting 在Vala中对默认数组进行排序的简单方法

Sorting 在Vala中对默认数组进行排序的简单方法,sorting,vala,Sorting,Vala,我这样试过,但没用。我认为排序数组的方法太复杂了。我需要像C的System.Array.Sort()这样的东西# int[]data={3,9,2,7,5}; var arr=新数组(); arr.append\u vals(数据,数据长度); arr.sort((a,b)=>{ 返回(int)(a>b)-(int)(a

我这样试过,但没用。我认为排序数组的方法太复杂了。我需要像C的System.Array.Sort()这样的东西#

int[]data={3,9,2,7,5};
var arr=新数组();
arr.append\u vals(数据,数据长度);
arr.sort((a,b)=>{
返回(int)(a>b)-(int)(a
函数需要知道数组中每个元素的大小,
sizeof(int)
,但是你给它的是另一种类型的大小,
sizeof(string)

好的,谢谢,它正在工作。但是,在没有函数比较声明的情况下,真的没有更简单的方法对数组进行排序吗?(也不是lambda)数组在Vala中是一种非常低级的类型,它只表示一个C指针和一个长度。对于“简单”排序和其他功能,您需要更高级别的数据类型,如
Gee.ArrayList
(实现
Gee.List.sort
)。
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");
    }

}