可以自己写一个
/// <summary>
/// 随机排序
/// </summary>
/// <param name="arry"></param>
/// <returns></returns>
public static int[] RandSort(int[] arry)
{
int[] arryNew = new int[arry.Length];
Random rnd = new Random();
int n = arry.Length;
int i = 0;
while (n > 0)
{
int index = rnd.Next(n);
arryNew[i] = arry[index];
arry[index] = arry[n-1];
n--;
i++;
} return arryNew; }//调用
int[] arry = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] arryRes = RandSort(arry);
/// <summary>
/// 随机排序
/// </summary>
/// <param name="arry"></param>
/// <returns></returns>
public static int[] RandSort(int[] arry)
{
int[] arryNew = new int[arry.Length];
Random rnd = new Random();
int n = arry.Length;
int i = 0;
while (n > 0)
{
int index = rnd.Next(n);
arryNew[i] = arry[index];
arry[index] = arry[n-1];
n--;
i++;
} return arryNew; }//调用
int[] arry = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] arryRes = RandSort(arry);
//任意类型的队列随机排序
public static T[] RandSort<T>(T[] arry)
{
T[] arryNew = new T[arry.Length];
Random rnd = new Random();
int n = arry.Length;
int i = 0;
while (n > 0)
{
int index = rnd.Next(n);
arryNew[i] = arry[index];
arry[index] = arry[n - 1];
n--;
i++;
} return arryNew; }//调用
string[] sArray = new string[] { "ab", "fs", "ta", "ds", "gd", "fafd" };
string[] sArrayRes = RandSort<string>(sArray);
我想找的是类似java 里面, Collections.Shuffle的方法,听说.net里面有这样的方法,而且符合皮尔逊算法,C值可以达到0.05的卡方值的程度
Random r = new Random((int) DateTime.Now.Ticks);
var list = Enumerable.Range(0, 99).ToList();
list.Sort((x, y) => r.Next(-1,1));//这一句就行了
list.ForEach(x=>Console.Write(x+"\t"));
Console.Read();
list.Sort((x, y) => r.Next(-1,1));这句是什么意思?不是C#代码阿,能解释一下吗?
Enumerable.Range(0, 99).OrderBy(x=>r.Next()).ToList().ForEach(x=>Console.Write(x+"\t"));
//list.Sort((x, y) => r.Next(-1,1));
//list.ForEach(x=>Console.Write(x+"\t"));
Console.Read();
当数组比较大时,运行几次会报错“无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。x:“0”,x 的类型:“Int32”,IComparer:“”。”
当数组比较大时,运行几次会报错“无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。x:“0”,x 的类型:“Int32”,IComparer:“”。”
请问一下,我做排序的时候也出现这个报错。是因为数组比较大吗?那怎么解决呢?