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;
                        }
    
    }
  • 相关阅读:
    Hadoop Ambari 安装
    hadoop 集群配置--增加减少新的机器不重启
    使用 XMPP 构建一个基于 web 的通知工具——转
    Hadoop 1.1.2 Eclipse 插件使用——异常解决
    UltraEdit中文乱码的解决方法
    Hadoop开发环境简介(转)
    Hadoop构成
    hadoop 1.2.1 eclipse 插件编译
    Python print 输出到控制台 丢数据
    社招面试总结
  • 原文地址:https://www.cnblogs.com/zhaodun/p/7470733.html
Copyright © 2011-2022 走看看