• 简单选择排序


    简单选择排序是选择排序的一种,下面是选择排序的一些特征:

    • 时间复杂度,最好最坏平均都为:O(n^2)
    • 空间复杂度,最好最坏平均都为:O(1)
    • 是否稳定:不稳定

    每次排序都将一个元素放到最总位置上,第k次排序,放第k大的元素到最终位置上

    简单选择排序的基本思想:每次选择剩余元素中最小(大)的元素放到排好的序列最后(前),知道剩余元素为0。

    下面是简单选择排序的代码:

    /**
    * arr 数组首地址
    * len 数组长度
    */
    void select_sort(int *arr, int len)
    {
        int i, j;
        for (i=0; i<len-1; i++) {   // 把len个元素中较小的len-1个元素排好序后,那len个元素就排好序了
            int min = i;
            for (j=i+1; j<len; j++)
                if (arr[j]<arr[min])
                    min = j;
            if (min!=i)
                swap(arr+i, arr+min);   // 交换两个元素的位置
        }
    }
    

    测试代码,可直接复制后编译执行:

    #include <stdio.h>
    
    void show(int *arr, int len);
    void select_sort(int *arr, int len);
    void swap(int *px, int *py);
    
    int main()
    {
        int len = 7;
        int arr[] = {7, 10, 11, 9, -8, 2, 27};
        select_sort(arr, len);
        show(arr, len);
        return 0;
    }
    
    /**
    * 交换两个元素的值
    */
    void swap(int *px, int *py)
    {
        int temp = *px;
        *px = *py;
        *py = temp;
    }
    
    /**
    * arr 数组首地址
    * len 数组长度
    */
    void show(int *arr, int len)
    {
        int i;
        for (i=0; i<len; i++) {
            printf("%4d", arr[i]);
        }
        printf("
    ");
    }
    
    /**
    * arr 数组首地址
    * len 数组长度
    */
    void select_sort(int *arr, int len)
    {
        int i, j;
        for (i=0; i<len-1; i++) {   // 把len个元素中较小的len-1个元素排好序后,那len个元素就排好序了
            int min = i;
            for (j=i+1; j<len; j++)
                if (arr[j]<arr[min])
                    min = j;
            if (min!=i)
                swap(arr+i, arr+min);   // 交换两个元素的位置
        }
    }
    
  • 相关阅读:
    利用guava来实现本地的cache缓存
    加减乘除工具类BigDecimalUtil
    linux使用apache发布静态html网页
    为什么从pycharm中打开的html文件会显示404?
    unittest测试框架生成可视化测试报告-BeautifulReport
    python虚拟环境迁移
    linux查看系统版本
    Webhook到底是个啥?
    钩子函数和回调函数的区别
    LookupError: "gw_lt" is not among the defined enum values
  • 原文地址:https://www.cnblogs.com/qijinzhi/p/select_sort.html
Copyright © 2020-2023  润新知