排序二 选择排序

选择排序(Selecting Sort)

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 —百度百科

  • 时间复杂度:最好 O(n)=O(n²);平均O(n)=O(n²);最差O(n)=O(n²)
  • 空间复杂度:O(n)=O(1)
  • 稳定性:    不稳定
  • 优势:      交换次数为O(n)

算法描述

  1. 定义低位index=0
  2. 从低位index遍历数组查找最小元素
  3. 将最小元素与低位index元素交换
  4. index加一。若start等于数组长度则排序结束,否则执行2
    Selection Sort
    图片来自维基百科

排序示例

数组S: [9,1,5,3,8,7]
第一趟:[1,9,5,3,8,7] –index=0,min=1
第二趟:[1,3,5,9,8,7] –index=1,min=3
第三趟:[1,3,5,9,8,7] –index=2,min=5
第四趟:[1,3,5,7,8,9] –index=3,min=7
第五趟:[1,3,5,7,8,9] –index=4,min=8
第六趟:[1,3,5,7,8,9] –index=5,min=9

示例代码

public static void SelectSort(int[] S){ //C#
    int minIndex;
    for (int i = 0; i < S.Length; i++){
        minIndex = i;
        for (int j = i + 1; j < S.Length; i++){
            if (S[minIndex] > S[j]){
                minIndex = j;
            }
        }
        S.Swap(i, minIndex);
    }
}
def select_sort(s):  #Python
    min_index = 0
    for i in range(0, len(s)):
        min_index = i
        for j in range(i+1, len(s)):
            if s[min_index] > s[j]:
                min_index = j
        s[min_index], s[i] = s[i], s[min_index]

文中若有什么错误,欢迎留言指正。

转载请保留出处:http://blog.csdn.net/x1060549/article/details/78775024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值