1

だから私はクイックソートアルゴリズムを持っています.整数配列を2つに分割し、両方の配列を再帰的に呼び出す必要があります.

partition(array,lower);
partition(&array[lower + 1], array.Length - lower - 1);

しかし、unsafe をパーティション クラスに追加しようとしても、c# はそのコードを受け入れないので、それが機能するにはどうすればよいのでしょうか?

ポインターを使用せずに修正できるかもしれませんが、そのような問題が発生するたびにコード全体を変更する必要がないように学びたいと思っています。

4

3 に答える 3

2

リンクはどうですか?

array.Take(lower);
array.Skip(lower);

気に入ると思います

于 2013-03-03T19:29:42.450 に答える
1

SubArrayから作成する簡単な方法Array

    private static void Main()
    {

        int[] array = Enumerable.Range(1, 10).ToArray();
        int lower = 5;
        int[] array1 = array.SubArray(0, lower);
        int[] array2 = array.SubArray(lower, array.Length - lower);
    }

    public static T[] SubArray<T>(this T[] source, int sourceIndex, int length)
    {
        T[] result = new T[length];
        Array.Copy(source, sourceIndex, result, 0, length);
        return result;
    }
于 2013-03-03T19:34:17.120 に答える
0

アンセーフ コードを使用するには、次の 2 つが必要です。

  1. unsafe安全でないコードをキーワードでマークします(あなたが言ったように)
  2. 適切な設定を構成して、プロジェクトを安全でないものとしてコンパイルします
于 2013-03-03T19:26:00.547 に答える