zoukankan      html  css  js  c++  java
  • 【C++】选择排序

    性能分析:

      时间复杂度:O(n^2)

      空间复杂度:O(1)

    虽然性能跟冒泡排序一样,但是速度上来讲,选择排序要优于冒泡排序,因为减少了数据交换的次数,先找到了最小值的下标,然后将它往前挪。

    #include<iostream>
    #include<vector>
    using namespace std;
    
    int main()
    {
        // 首先找出待排序列中最小的数,然后用这个数和原序列中的第一个数交换位置;
        // 其次,找出第二小的和原第二个数交换位置;
        // 依次顺序直到找到第二大的数,之后原数列完全变成有序数列.
        int data[] = { 1,3,5,2,7,8,9,6,0 };
        //获取序列元素个数
        int length = 9;
        int i, j, min;
        for (i = 0;i < length;i++)
        {
            min = i;//将当前下标定义为最小值下标
            for (j = i + 1; j < length; j++)
            {
                if (data[min] > data[j])
                    min = j;//记录更小的一个值的下标
            }//通过循环找到了无序区最小值的下标
            if (i != min)//如果设定的最小值下标不是无序区的最小值,就交换二者的值
            {
                int temp = data[i];
                data[i] = data[min];
                data[min] = temp;
            }
        }
        for (int i = 0; i < length; i++)
        {
            cout << data[i] << "   ";
        }
    }
  • 相关阅读:
    python面向对象__call__
    python的上下文管理协议
    python析构方法__del__
    next和iter可迭代协议
    __slots__ 用法
    定制自己的数据类型
    内置的Attr系列
    反射和自省
    isinstance和issubclass
    BLE 学习
  • 原文地址:https://www.cnblogs.com/masbay/p/14026314.html
Copyright © 2011-2022 走看看