欢迎来到风尚网
风尚网首页 > 首页 > 阅读 > 线代:求解排列中的逆序数

线代:求解排列中的逆序数

作者:宅祺祺 2016-02-19 07:12 来源:简书 编辑:美朵

文章摘要
我们知道所谓逆序数就是求出一个数组中的每一项的之前的若干项中有多少项比它大,就叫做逆序数,把所有项的逆序数的加起来就是这个排列的逆序数。逆序数在排列中运用广泛。举例:比如3,5,1,4,7,2,6这个数列中3在首位所以逆序数是05之前的3比5小,所以逆序数也是01之前有3和5都比它大,所以逆序数是2以此类推4的逆序数是17的逆序数是02的逆序数是46的逆序数是1所以这个排列的逆序数是0+0+2+1+0+4+1=8C语言实现://这是实现逆序...

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

逆序数在排列中运用广泛。

举例:比如 3,5,1,4,7,2,6这个数列中3 在首位所以逆序数是05 之前的3比5小,所以逆序数也是01 之前有3和5都比它大,所以逆序数是2以此类推4 的逆序数是17 的逆序数是02 的逆序数是46 的逆序数是1所以这个排列的逆序数是0+0+2+1+0+4+1=8

C语言实现:

//这是实现逆序数的程序
#include<stdio.h>
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<i;j++)
        {
            if(a[i]<a[j])
            {
                ni++;
            }
        }
        printf("+%d",ni);
        nisum=nisum+ni;
    }
    printf("=%dn",nisum);
    return 0;
}

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

#include<stdio.h>
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<i;j++)
            if(a[i]<a[j])
                ni++;
        printf("+%d",ni);
        nisum+=ni;
    }
    printf("=%dn",nisum);
}

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

#include<stdio.h>
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<i;a[i]<a[j]?ni++:0,j++);
        printf("+%d",ni);
        nisum+=ni;
    }
    printf("=%dn",nisum);
}

参考文献:

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

小主,按键盘右方向键 → 翻页可以跳过片头呢

  

上一篇:迷失编译:第二幕

  

下一篇:悬疑中篇小说《四季》(05)

  

本文标题:线代:求解排列中的逆序数

原文链接:http://i.she.vc/27738.html

和本文相似的内容:

点击排行