数据结构之选择排序

1.算法描述

在一个长度为 N 的无序数组中,第一次遍历 n-1 个数找到最小的和第一个数交换。

第二次从下一个数开始遍历 n-2 个数,找到最小的数和第二个数交换。

重复以上操作直到第 n-1 次遍历最小的数和第 n-1 个数交换,排序完成。

简单来说就是在一个数组中先找到最小的值和第一个元素进行交换,然后在除第一个元素之外的剩余数组中找一个最小的值,和第二个元素进行交换。。。

 

 

 代码实现:

  public class SelectSort
    {
        public static void Sort(int[] arr)
        {
            int n = arr.Length-1;
            for (int i = 0; i < n; i++)
            {
                int min = i;
                for (int j = i + 1; j < n; j++)
                {
                    if (arr[j] < arr[min])
                    {
                        min = j;
                    }
                }

                //将其中一个元素和其他所有未比较 过的元素对比一遍之后进行交换 
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;

            }


        }
 
    }


 调用:

      static void Main(string[] args)
        {
            int[] arr = { 3, 4, 1, 222};

            SelectSort.Sort(arr);

            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]);
            }
        }

 

结果:

1
3
4
222

 

冒泡排序和选择排序对比

冒泡排序在对比的时候大概率会交换多次,但是选择排序在为每一个元素做对比的时候只需要记录下最小/大值的索引,最后进行交换就可以,总体来说效率比冒泡高。

 

posted @ 2021-09-04 10:15  安静点--  阅读(49)  评论(0编辑  收藏  举报