文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>重温排序算法(一)

重温排序算法(一)

时间:2011-04-27  来源:Rex Hou

   最近闲着无聊,想到算法是个挺重要的事情,于是重温大学时学的数据结构。因此,把复习的算法执行了一遍,把算法也贴到这里,以备所需时查阅。

我准备要写的主要是内部排序,内部排序主要有插入排序(直接插入排序和希尔排序), 交换排序(冒泡排序和快速排序),选择排序(树型选择排序、堆排序、直接选择排序)以及归并排序和基数排序。我准备把这些算法都用C实现一下,今天主要是插入排序。

  1.   首先是最简单的插入排序 int _tmain(int argc, _TCHAR* argv[])
    {
        int a[7] = {0, 49, 38, 65, 97, 76, 12};
        int j;
        for(int i = 2; i <= 6; i++) //进行n-1趟排序
        {
            if(a[i] >= a[i-1])
            {
                continue;
            }
            a[0] = a[i]; //复制为哨兵
            a[i] = a[i-1];

            for( j = i - 2; a[j] > a[0] ; j--) //值若小,则前移,因为有哨兵的缘故,所以不必担心越界:)
            {
                a[j+1] = a[j];
            }
           a[j+1] = a[0];
        }

        for(int i = 1; i < 7; i++)
        {
            printf("%u  ",a[i]);
        }

        scanf("%c");
    }

    从空间来看,它只需要一个记录的辅助空间,而时间复杂度为:0(n2)。

     适用情况:1.元素个数较少 2 基本有序时

相关阅读 更多 +
排行榜 更多 +
无限Fps

无限Fps

飞行射击 下载
幸存者时间僵尸

幸存者时间僵尸

飞行射击 下载
金属兄弟Metal Brother

金属兄弟Metal Brother

冒险解谜 下载