BottomupSort算法 c++代码实现

#include <iostream>
using namespace std;

#define N 100

int A[N];
static int n;   

void Initial()
{
    cout << "请输入元素的个数:";
    cin >> n;
    cout << "请输入" << n << "个元素:";
    for(int i = 1; i <=n; i ++)
    {
        cin >> A[i];
    }
}

void Print()
{
    cout << "经过Bottomupsort后:";
    for(int i = 1; i <=n; i ++)
    {
        cout << A[i] << " ";
    }
    cout << endl;
}

void Merge(int a[], int p, int q, int r)
{
    int b[N];
    int s = p, t = q+1, k = p;

    while(s <= q && t <= r)
    {
        if(a[s] <= a[t])
        {
            b[k++] = a[s++];
        }
        else
        {
            b[k++] = a[t++];
        }
    }

    if(s==q+1)
    {
        for(int i = t; i <= r; i ++)
        {
            b[k++] = a[i];
        }
    }
    else
    {
        for(int j = s; j <= q; j ++)
        {
            b[k++] = a[j];
        }
    }

    //把b[]中排好的元素copy到a[]中
    for(int i = p; i <= r; i++)
    {
        a[i] = b[i];
    }
}

void Bottomupsort(int a[],int n)
{

   int t = 1;
   int s,i;
   while (t<n)
   {
        s = t;t =2*s;i=0;
        while(i+t<=n)
        {
            Merge(a,i+1,i+s,i+t);
            i = i+t;
        }
        if(i+s<n)
        {
            Merge(a,i+1,i+s,n);
        }
   }
}

int main()
{
    Initial();

    if(n > 1)
    {
        Bottomupsort(A,n);
        Print();
    }
    else if(n == 1)
    {
        Print();
    }
    system("pause");
    return 0;
}
时间: 2024-09-30 19:55:41

BottomupSort算法 c++代码实现的相关文章

Python实现各种排序算法的代码示例总结

Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示例总结,其实Python是非常好的算法入门学习时的配套高级语言,需要的朋友可以参考下 在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数.<数据结构>也会花大量篇幅讲解排序.之前一段时间,由于需要,我复习了

排序算法总结---代码+性能

// data_sort_alg.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "sort_alg.h" #include <iostream> #include <vector> void show(std::vector<int> &a) { std::vector<int>::iterator it=a.begin(); while(it!=a.

机器学习算法的代码实现之第四章节:回归之梯度上升法

二种类别的点在平面上分布,我想找到一条直线,将平面划为两半边,每一边的点类别尽可能的统一,如何找到效果最佳的分界线,这就是最佳拟合问题,也叫作回归问题. 这次,代码很少.logRegres.py # coding:utf-8 from numpy import * #=============================================================================== # 数据集 #=============================

计算机视觉算法与代码集锦

计算机视觉算法与代码集锦 计算机视觉是结合了传统摄影测量,现代计算机信息技术.人工智能等多学科的一个大学科,是一片开垦不足的大陆,路很远,但很多人都在跋涉! 本文转自CSDN(地址http://blog.csdn.net/whucv/article/details/7907391),是一篇很好的算法与代码总结文档,转载在此供大家学习参考. 原文如下: UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下: https://netfiles.uiuc.edu/jbhua

谱聚类算法及其代码(Spectral Clustering)

简介 文章将介绍谱聚类(spectral clustering)的基本算法,以及在matlab下的代码实现.介绍内容将包括: 从图分割角度直观理解谱聚类 谱聚类算法步骤 数据以及实现代码 本文将不会涉及细节化的证明和推导,如有兴趣可参考july大神的文章从拉普拉斯矩阵说到谱聚类. 对谱聚类的理解 这一节将从图分割聚类的角度直观理解谱聚类.不过,因为本人是从事社交媒体分析的,将从一种社会关系网络的角度来介绍网络图分割成多个子图的概念. 图的分割 首先将社会关系网络看成是一个整体,每一个个体(use

php短网址算法实例代码分享

php实现的短网址算法,理论上支持1,073,741,824个短网址. 每个网址用6个字符代替,(6^32) 最多可以拥有1,073,741,824个短网址.当然,你还可以记录更详细的信息,如访问记录,创建时间等.如果真不够用了,还可以删掉很久不用的. function shorturl($input) { $base32 = array ( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p

kmp算法c++代码实现

1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 #define max 5000 5 6 int t[max];//目标串 7 int p[max];//模式串 8 int next[max];//前缀函数 9 int n,m;//n为目标串的数目,m为模式串的数目 10 void function_prefix(int *s,int *next) 11 { 12 next[1]=next[0]=0;

各种排序算法的代码

1 // ALLKindsOfSorts.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include<iostream> 6 #include<vector> 7 #include<bitset> 8 9 using namespace std; 10 11 ////////////////////////////////////////所有的排序总结///////////////////

KMP算法的代码实现

上周算法班的BEN老师花了1个小时讲自动机和KMP的关系,结果failed...明天又要上课了,花了半天时间看了下KMP,暂且停留在利用next求模式中的跳跃长度,自动机那个还不能理解... 具体的可以百度阮一峰的KMP算法. 看着什么前缀后缀,突然想到上下文无关文法乔姆斯基范式了....又想到了NFA和正则表达式的转换,是时候复习复习了.. 太晚了,直接上代码,明天继续看ML和统计学!加油! 1 #include <iostream> 2 #include <string> 3