• 数据结构(七)排序---简单选择排序


    一:简单选择排序

    定义:

    简单选择排序就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之
    就是我们从第一个开始循环,获取到最小的就与第一个交换,然后走到第二个位置,找到剩下元素中最小的,和第二个交换,每次循环都是获取最小的数,所以最后排序出来的就是一串从小到大的数据

    实现:

    { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 }
    void SelectSort(SqList *L)
    {
        int i, j, min,count1,count2;
        count1 = count2 = 0;
        for (i = 1; i < L->length;i++)
        {
            min = i;    //将当前下标定义为最小值下标
            for (j = i + 1; j <= L->length;j++)    //循环之后的数据
            {
                count1++;
                if (L->r[min]>L->r[j])    //如果由小于当前最小值的关键字
                    min = j;    //更新最小值
            }
            if (i != min)    //若是我们在上面循环中找到最小值,则min会改变,与i不同,就需要进行交换
            {
                swap(L, i, min);
                count2++;
            }
        }
        printf("loop count:%d,  swap count:%d
    ", count1, count2);
    }

    性能分析:

    和上面的冒泡排序相比交换次数变少了,但是和最终版的冒泡比较,可能循环次数不如人家
    时间复杂度为O(n*(n-1)/2)-->O(n^2)
    简单选择排序的性能要略优于冒泡排序
  • 相关阅读:
    SQL语句执行效率及分析(note)
    双重检查锁定及单例模式
    可定制生命周期的缓存
    php CI框架高级视图功能,视图继承,多重继承,视图片段
    php 使用pdo连接postgresql
    python 学习整理
    phpmailer 发送邮件
    php syslog记录系统日志
    php 学习整理
    php 生成唯一id方法
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9510613.html
Copyright © 2020-2023  润新知