Bucket Sort算法问题c#

时间:2018-03-29 21:10:05

标签: c#

我正在学习排序算法,目前我的第一个"分销通行证#34;正如我的描述所描述的那样,第一个循环是我根据值的值将每个值排序到我的桶阵列中的位置。除了我的values数组的第9个索引之外,它适用于每个值。循环在到达第9个索引之前终止。我试过改变for循环的条件,但这似乎不起作用。关于正在发生的事情的一些帮助或提示将非常感激!

**编辑这不是完整的算法,它只是前两个步骤。我按照c#book的说明进行操作。在每个循环之前放置的注释是本书中的单词指令。我不想继续使用排序算法,直到第一个循环正常工作。

    public static void Sort(int[] values)
    {
        int n = values.Length;
        int[,] buckets = new int[n, n - 1];
        int index = 0;

        // Place each value of the one-dimensional array
        // into a row of the bucket array, based on the
        // value's "one's" (rightmost) digit.
        // "Distribution Pass"
        for (int i = 0; i < values.Length -1; ++i)
        {
            // Get the one's value of values[i]
            int ones = (values[i] % 10);

            // Place the value in the appropriate bucket
            buckets[ones, i] = values[i];
        }


        // Loop through the bucket array row by row, 
        // and copy  the values back to the original
        // array.
        // "Gathering Pass"                           
        for (int r = 0; r < n; r++)
        {
            for (int c = 0; c < n - 1; c++)
            {
                try
                {

                    if (buckets[r, c] != 0)
                    {
                        values[index] = buckets[r, c];
                        index++;
                    }
                }
                catch
                {

                }
            }
        }

    }
    private void button1_Click(object sender, EventArgs e)
    {
        Random rand = new Random();
        int[] randomArray = new int[10];

        label1.Text = "Unsorted Array: ";
        label2.Text = "   Sorted Array: ";

        for (int i = 0; i < randomArray.Length; i++)
        {
            randomArray[i] = rand.Next(10, 100);
            label1.Text += randomArray[i] + " ";
        }

        Sort(randomArray);
        label2.Text += string.Join(" ", randomArray);
    }

0 个答案:

没有答案