(入门)C#中的常用排序算法——选择排序(其三)

 从上一则博客讲起,目前我们已经知晓了插入排序这种算法,接下来就来看看第三种排序算法——选择排序

(感谢读者朋友些,这是传送门:冒泡排序插入排序

正式开始

        同样的,这还是从小到大排序。我懒惰,不想写从大到小的,聪明的读者朋友应该会写。

        与前两种排序方式不同,选择排序是依靠交换去移动元素的排序方法中最有效一种。它的核心思路是找到一个数组的最大元素,把它放在数组的最末位。然后在进行递归,继续去选择前面的无序数组的最大值,并又把它放在无序数组最末位。如此,在进行 n-1 次递归后数组被整理完毕。

        这里有个生动形象的GIF,网上都有哒

         这个动图其实跟现在文章中讲的不太一样,它把数组分为了一些区间再来选择。怎么说,其实这种会更好些,但代码会更加复杂,这文章是给初学者看的,就不提那种写法了(主要是懒)。

具体思路

        开始

        M[1,2,3,......,n]无序

        第一次

        M[1,......,n]选择最大值M[k],并与M[n]交换位置

        第 i 次

        M[1,......, i-1 ]是有序的

        M[i,......, n ]是无序的

        在无序区间内选择M[k]最大,并且与M[1,......, i-1 ]交换位置

        最终,Selection sort完毕

代码实例

这里放出代码的方法块,建议新手手打哦。

private static void SelectionSort(int[] List)
    {
            for (int i = 0; i < List.Length - 1; i++)
            {
                int Index = i;  //List中最小值的下标
                for (int j = i + 1; j < List.Length; j++)
                {
                    if (List[j] < List[Index])
                    {
                        Index = j;
                    }
                }//获取目前的末下标
                int temp = List[i];
                List[i] = List[Index];
                List[Index] = temp;//交换数据
            }
    }    

收工

        至此,三种常见的排序算法已经给大家全部普及完了。

        希望大家有所收获,我们一起进步。

        之后我会多发一些Unity3d的内容,毕竟我还是比较擅长U3D的。

        感谢大家!!!(转载给我说声哦)

猜你喜欢

转载自blog.csdn.net/LBCLBC666/article/details/126164589