400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

线代:求解排列中的逆序数-创新互联

我们知道所谓逆序数就是求出一个数组中的每一项的之前的若干项中有多少项比它大,就叫做逆序数,把所有项的逆序数的加起来就是这个排列的逆序数。逆序数在排列中运用广泛。

举例:比如 3,5,1,4,7,2,6这个数列中

3 在首位所以逆序数是0

5 之前的3比5小,所以逆序数也是0

1 之前有3和5都比它大,所以逆序数是2

以此类推

4 的逆序数是1

7 的逆序数是0

2 的逆序数是4

6 的逆序数是1

所以这个排列的逆序数是0+0+2+1+0+4+1=8

C语言实现:

//这是实现逆序数的程序
#include

int main()
{
    int i,j,a[10],ni,nisum=0;
    printf("请输入由一个十个整数元素组成排序:\n");    
    for(i=0;i<10;i++)
    {
        printf("第%d个元素:",i+1);
        scanf("%d",&a[i]);
        printf("\n");
    }
    printf("逆序数为 0");
    for(i=1;i<10;i++)
    {
        ni=0;
        for(j=0;j

C语言程序的精简形式(和上面一样,只是删除了一些啰嗦的内容)

#include
main()
{
    int i,j,a[10],ni,nisum=0;
    printf("请输入由一个十个整数元素组成排序:\n");    
    for(i=0;i<10;i++)
    {
        printf("第%d个元素:",i+1);
        scanf("%d",&a[i]);
        printf("\n");
    }
    printf("逆序数为 0");
    for(i=1;i<10;i++)
    {
        ni=0;
        for(j=0;j

更精简但是不推荐的形式:

#include
main()
{
    int i,j,a[10],ni,nisum=0;
    printf("请输入由一个十个整数元素组成排序:\n");    
    for(i=0;i<10;i++)
    {
        printf("第%d个元素:",i+1);
        scanf("%d",&a[i]);
        printf("\n");
    }
    printf("逆序数为 0");
    for(i=1;i<10;i++)
    {
        ni=0;
        for(j=0;j

参考文献:

  1. 同济大学数学系 工程数学—线性代数 北京:高等教育出版社 2007

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:线代:求解排列中的逆序数-创新互联
文章来源:http://mbwzsj.com/article/eshsg.html

其他资讯

让你的专属顾问为你服务