zoukankan      html  css  js  c++  java
  • 排序算法详解 一

    1.插入排序

    //Description  :最差情况下,直接插入排序的最大时间代价为θ(n²),最小时间代价为θ(n),平均时间代价为θ(n²)。

    void InserSort(int array[],int n)
    {
        for (int i=1;i<n;++i)
        {
            for (int j=i;j>0;--j)//以0到i为遍历区间
            {
                if (array[j]<array[j-1])
                    swap(array,j,j-1);
                else
                    break;//为>时即可知是有序数组即break
            }
        }
    }

    2.冒泡排序

     

    图示是依次从大到小找到各个元素,下面代码依次从小到大找到各个元素

    //Description  :冒泡排序的最大时间代价,最小时间代价和平均时间代价均为θ(n²)(稳定)。

    void BubbleSort(int array[],int n)
    {
        for (int i=0;i<n-1;i++)//通过n-1次循环一次将最小值排到最左边
        {
            for (int j=n-1;j>i;--j)//从右边开始遍历
            {
                if(array[j]<array[j-1])
                    swap(array,j,j-1);
            }
        }
    }

    3.选择排序

    //Description  :选择排序的最大时间代价,最小时间代价和平均时间代价均为θ(n²)。选择排序不依赖于原始数组的输入顺序。(稳定)

    void SelectionSort(int array[],int n)
    {
        for (int i=0;i<n-1;++i)//外循环,用smallest不断抽取最小值
        {
            int smallest=i;
            for(int j=i+1;j<n;++j)//内循环找到smallest
            {
                if(array[smallest]>array[j])
                    smallest=j;
            }
            swap(array,i,smallest);
        }
    }

    4.希尔排序(特殊的插入排序)

    //Description  :增量为2的shell排序的时间代价可以达到θ(n的3/2次方),有的增量可以达到θ(n的7/6次方),很接近θ(n)。

    void ShellSort(int array[],int n)
    {
        for(int delta=n/2;delta>0;delta/=2)
            for(int i=0;i<delta;++i)
                for(int j=i+delta;j<n;j+=delta)
                    for(int k=j;k>0;k-=delta)
                        {
                            if(array[k]<array[k-1])
                              swap(array,k,k-1);
                            else
                                break;
                        }
    
    }
  • 相关阅读:
    docker镜像文件导入与导出,支持批量
    配置和启动Kubernetes服务
    在CentOS 7 上安装docker
    安装CentOS7精简版后的配置工作
    Docker镜像加速
    docker命令不需要敲sudo的方法
    建立时间和保持时间(setup time 和 hold time)
    时序收敛:基本概念
    GitHub: Windows 下的简单使用
    K-means算法和矢量量化
  • 原文地址:https://www.cnblogs.com/zhaodun/p/7470733.html
Copyright © 2011-2022 走看看