基础算法之选择排序

来源:互联网 发布:手机降温软件哪个好 编辑:程序博客网 时间:2024/06/04 18:23

选择排序的思想,n个数据存在数组a[0]到a[n-1],然后一个一个排列。先考虑第一个数,存于a[0],需从a[0]到a[n-1]选择出最小的一个数,然后存放于a[0]处,然后考虑第二个数,从a[1]到a[n-1]中找到最小的数,存到a[1],…,直到第n-1个数。可以和冒泡排序的思想相比较,冒泡是通过相邻的两个数据比较,每次循环最终将最大的数排在了最后面,而选择排序是每次选择最小的数,然后排在最前面,由此可以当作一个另类冒泡算法。当然还有一种思路就是每次先定位出最小的数,然后再做替换的操作。以下给出两种写法

C#代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BubbleSort{    class Program    {        static void Main(string[] args)        {            int[] arr = {13,15,1,5,3,55,2,8,15,6,8,19,4,7,11};            SelectSort1(arr);        }        #region 选择排序        public static void SelectSort(int[] arr)        {            int len = arr.Length;            int temp, k;            for (int i = 0; i < len - 1; i++)            {                k = i;                for (int j = i + 1; j < len; j++)                {                    if (arr[j] < arr[k])                    {                        k = j;                    }                }                if (i != k)                {                    temp = arr[i];                    arr[i] = arr[k];                    arr[k] = temp;                }            }            Console.WriteLine("选择排序后的顺序:" + string.Join(",", arr));            Console.ReadLine();        }        public static void SelectSort1(int[] arr)        {            int len = arr.Length;            int temp;            for (int i = len - 1; i >= 0; i--)            {                for (int j = len-1; j > len-i-1; j--)                {                    if (arr[j] < arr[j - 1])                    {                        temp = arr[j-1];                        arr[j - 1] = arr[j];                        arr[j] = temp;                    }                }            }            Console.WriteLine("选择排序后的顺序:" + string.Join(",", arr));            Console.ReadLine();        }        #endregion    } }

运行结果
这里写图片描述
若有错误,请指正

0 0
原创粉丝点击