zoukankan      html  css  js  c++  java
  • 各种排序总结(二)直接选择排序

    /***************
    思路:外层循环:从0到n-1遍历数组。
          对于第i个元素,内层循环:从i+1开始遍历数组找到最小的元素,与i交换。
    ****************/
    
    #include <iostream>
    
    using namespace std;
    
    void SelectSort(int* arr, int n)
    {
        int i,j,temp,min_index;
        for(i=0; i <n-1; i++)
        {
            min_index = i;
            for(j=i+1; j<n; j++)
            {
                if(arr[j] < arr[min_index])
                    min_index = j;
            }
            if(i != min_index)
            {
                temp = arr[i];
                arr[i] = arr[min_index];
                arr[min_index] = temp;
            }
        }
    }
    int main()
    {
        int * arr;
        int n;
        cout<<"Input the arr length:"<<endl;
        cin>>n;
        arr = new int[n];
        cout<<"Input the arr elements:"<<endl;
        for(int i=0;i<n;i++)
        {
            cin>>arr[i];
        }
        SelectSort(arr,n);
        cout<<"The outcome:"<<endl;
        for(int i=0;i<n;i++)
            cout<<arr[i]<<endl;
        return 0;
    }
    
    /************************
    不稳定
    时间代价:最大、最小、平均时间代价均为O(n^2)。
    空间代价:一个临时记录,O(1)。
    总结:
    1.由于时间为O(n^2),因此适用于数组n较小的情况。
    2.由于整个排序过程最多n-1次交换,相比于同样时间复杂度的直接插入排序交换次数少,
      因此更适合于数据记录结构较大的情况。(由于移动大记录的时间开销大,选择排序
      可以最少的移动操作节省排序时间)
    ************************/
  • 相关阅读:
    Why use strong named assemblies?
    Dependency Walker
    “等一下,我碰!”——常见的2D碰撞检测
    MOBA游戏的网络同步技术
    VS2017如何配置openGL环境
    UE4关于Oculus Rift (VR)开发忠告
    UE4 的json读写方式
    Blueprint 编译概述
    UE4编码规范
    Unreal Enginer4特性介绍
  • 原文地址:https://www.cnblogs.com/CnZyy/p/3314635.html
Copyright © 2011-2022 走看看