选择排序:是一种简单直观的排序算法。速度不是很快。时间是O(n2)。

思路:遍历元素列表,获取最小(大)的元素,放到元素列表的首位。然后再从第二位元素开始,获取最小(大)的元素,并与第二位元素交换,依次循环。直至排序完成。

代码实现:

/// <summary>
///   选择排序
/// </summary>
/// <param name="arr">元素列表</param>
public static int[] Selection(int[] arr)
{
    int temp;
    for (int i = 0; i < arr.Length; i++)
    {
        //最小值,默认第一个最小
        int min = arr[i];
        //最小值索引
        int minIndex = 0;

        for (int j = i; j < arr.Length; j++)
        {
            if (arr[j] <= min)
            {
                min = arr[j];
                minIndex = j;
            }
        }
        //交换
        temp = arr[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
    return arr;
}

测试调用:

static void Main(string[] args)
{
    int[] arry = new[]{5,1,4,7,2,8,3,6,9};

    Selection(arry);

    foreach (var i in arry)
    {
        Console.Write(i + ",");
    }
    Console.WriteLine();
    Console.WriteLine("程序运算完成");
    Console.ReadKey();
}

输出结果:

1,2,3,4,5,6,7,8,9,
程序运算完成

发表评论

电子邮件地址不会被公开。 必填项已用*标注

wJie博客 – 个人博客 is Stephen Fry proof thanks to caching by WP Super Cache