我试图对数组进行选择排序。但由于某种原因,它不会排序。我的代码:
public static void SelectionSort(DataArray ar)
{
int n = ar.Length;
for (int x = 0; x < n; x++)
{
int min_index = x;
for (int y = x; y < n; y++)
{
if (ar[min_index] > ar[y])
{
min_index = y;
}
ar.Swap(y, ar[x], ar[min_index]);
}
}
}
感谢您的任何想法和帮助。
我的交换代码如下所示
public override void Swap(int j, int a, int b)
{
data[j - 1] = a;
data[j] = b;
}
答案 0 :(得分:0)
你有正确的想法,除非有一些小问题。我没有编译,但这应该工作。
public static void SelectionSort(DataArray ar)
{
int n = ar.Length;
for (int x = 0; x < n-1; x++)
{
int min_index = x;
for (int y = x+1; y < n; y++)
{
if (ar[min_index] > ar[y])
{
min_index = y;
}
ar.Swap(y, ar[x], ar[min_index]);
}
}
}
答案 1 :(得分:0)
class Program
{
static void Main(string[] args)
{
int[] arrayData = { 10,25,33,45,88,99,22,11,66,44,23};
for(int i = 0; i < arrayData.Length - 1; i++)
{
int minValue = i;
for(int j = i + 1; j < arrayData.Length; j++)
{
if (arrayData[j] < arrayData[minValue])
{
minValue = j;
}
}
/*Swap Code*/
int tempData = arrayData[minValue];
arrayData[minValue] = arrayData[i];
arrayData[i] = tempData;
}
/*Print Code*/
for(int i = 0; i < arrayData.Length; i++)
{
Console.Write(arrayData[i]+"\t");
}
Console.ReadLine();
}
}
答案 2 :(得分:-2)
使用linq:
var SortedArray = ar.OrderBy(o => o.Index).ToArray();