zoukankan      html  css  js  c++  java
  • 秒懂算法2——选择排序(C#实现)

    算法思路:

    每趟走访元素揪出一个最小(或最大)的元素,和相应位置的元素交换。(用数组{6,9,13,2,4,64} 举例)

    {},{6  9  13  【2】 4  64}       //第一趟,揪出2

    2},{    9   13  6  4   64}             //把2和第一位的元素互换

    {2},{    9    13  6 【4】  64}            //第二趟,揪出4

    {2  4},{     13  6    9   64}       //把4和第二位的元素互换

    ... ... 

    性质:

    选择排序是一种原地排序(只有常数个元素存到数组以外的空间),最坏的时间复杂度,和平均时间复杂度都是n2。它是不稳定的排序算法

    *选择排序和冒泡排序的区别:

    它俩写起来很像,运行过程也有点像。但是性能上,选择排序要稍好一些,简单的理解就是冒泡排序总是在进行交换,而选择排序相比之下交换的次数少很多。

    另,冒泡是稳定的,选择排序是不稳定的。

    代码:

    int[] SelectionSort1(int[] a)
     {
         int item;
         for (int i = 0; i < a.Length; i++)
         {
             int minIndex=i;              //记录最小元素的下标
    
             for (int j = i+1; j < a.Length; j++)   //遍历剩余元素
             {
                 if (a[minIndex] > a[j])  minIndex = j; 
             }
             if (a[minIndex] != a[i]) 
             {
                 item = a[i];
                 a[i] = a[minIndex];
                 a[minIndex] = item;
             }
         }
             return a;
     }
  • 相关阅读:
    CF 120F Spider 树的直径 简单题
    POJ 1155 TELE 背包型树形DP 经典题
    CF 219D Choosing Capital for Treeland 树形DP 好题
    POJ 3162 Walking Race 树形DP+线段树
    HDU 2196 Computer 树形DP 经典题
    __str__()、__repr__()和__format__()
    item系列方法
    getattribute
    isinstance和issubclass
    继承方式完成包装
  • 原文地址:https://www.cnblogs.com/hydor/p/3530590.html
Copyright © 2011-2022 走看看