所以我有一个快速排序算法,我必须将我的整数数组分成两个,然后递归调用两个数组。
partition(array,lower);
partition(&array[lower + 1], array.Length - lower - 1);
但是c#不接受该代码,即使我尝试将不安全的内容添加到分区类中,所以我想知道必须要做些什么才能工作?
也许我可以在不使用指针的情况下修复它,但我想学习所以每次遇到类似的问题我都不必为它改变整个代码。
答案 0 :(得分:2)
答案 1 :(得分: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;
}
答案 2 :(得分:0)
要使用不安全的代码,您需要两件事:
unsafe
keyword标记不安全的代码(正如您所说的那样)