当前位置:  开发笔记 > 编程语言 > 正文

以限制特征语言对并行数组进行排序的最有效方法

如何解决《以限制特征语言对并行数组进行排序的最有效方法》经验,为你挑选了1个好方法。

环境:我使用专有的脚本语言,没有用户定义的功能.我有各种循环和基本类型的局部变量,我可以创建和使用.

我有两个相关的数组,"时间"和"值".它们都包含浮点值.我想在数字上对"时间"数组进行排序,但必须确保在"values"数组上应用相同的操作.没有像递归之类的好处,我能做到这一点最有效的方法是什么?



1> chakrit..:

您可以维护索引表并改为对索引表进行排序.

这样您就不必担心时间和价值的一致性.

无论何时需要排序值,您都可以查找已排序的索引.

如果将来你决定将有第三个值,那么排序代码将不需要任何更改.

这是C#中的一个示例,但它不应该很难适应您的脚本语言:

static void Main() {

    var r = new Random();

    // initialize random data
    var index = new int[10];      // the index table
    var times = new double[10];   // times 
    var values = new double[10];  // values

    for (int i = 0; i < 10; i++) {
        index[i] = i;
        times[i] = r.NextDouble();
        values[i] = r.NextDouble();
    }

    // a naive bubble sort
    for (int i = 0; i < 10; i++)
        for (int j = 0; j < 10; j++)

            // compare time value at current index
            if (times[index[i]] < times[index[j]]) {

                // swap index value (times and values remain unchanged)
                var temp = index[i];
                index[i] = index[j];
                index[j] = temp;
            }

    // check if the result is correct
    for (int i = 0; i < 10; i++)
        Console.WriteLine(times[index[i]]);

    Console.ReadKey();

}

注意:我在那里使用了一个天真的泡泡排序.在您的情况下,插入排序可能是一个很好的候选人.因为您不需要复杂的递归.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有