• 数据结构之选择排序 安静点


    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

    冒泡排序和选择排序对比

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

  • 相关阅读:
    sql server mdx
    mysql 按照 汉字的第一个拼音排序
    转,mysql的select * into
    mysql 日期的操作
    google 地图api
    ip_test
    AJAX (转w3cschool)
    jquery ajax 失败
    安装AdventureWorks2008R2示例数据库
    弹出新的网页窗口 js
  • 原文地址:https://www.cnblogs.com/anjingdian/p/15225927.html
Copyright © 2020-2023  润新知