排序算法之选择排序

选择排序定义:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

class Program
{
    static void Main(string[] args)
    {
        int[] array = new[] { 234, 632, 23, 643, 2, 6, -2, 423, 2342,43 };
        Console.WriteLine("排序前:");
        Console.WriteLine(string.Join(",", array));

        SelectSort(array);

        Console.WriteLine("排序后:");
        Console.WriteLine(string.Join(",", array));
        Console.ReadKey();
    }
    
    /// <summary>
    /// 选择排序
    /// </summary>
    /// <param name="sources">目标数组</param>
    private static void SelectSort(int[] sources)
    {
        for (int i = 0, len = sources.Length - 1; i <= len; i++)
        {
            // 假设最小值索引
            int minIndex = i;

            // 循环遍历一遍找到最小值的索引
            for (int j = i + 1; j <= len; j++)
            {
                // 如果最小值比其他元素大,重新设置最小值的索引
                if (sources[minIndex] > sources[j])
                {
                    minIndex = j;
                }
            }

            // 临时变量交换最小值的位置;
            int temp = sources[i];
            sources[i] = sources[minIndex];
            sources[minIndex] = temp;
        }
    }
}

 

posted @ 2014-10-30 20:20  神叉  阅读(278)  评论(0编辑  收藏  举报