这一系列的工程数学教程面向的是已经掌握C语言编程基础读者
创新互联建站是一家专注网站建设、网络营销策划、小程序定制开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立10多年以来,已经为上千多家发电机回收各业的企业公司提供互联网服务。现在,服务的上千多家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。我们知道所谓逆序数就是求出一个数组中的每一项的之前的若干项中有多少项比它大,就叫做逆序数,把所有项的逆序数的加起来就是这个排列的逆序数。逆序数在排列中运用广泛。
举例:比如 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<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("=%d\n",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("=%d\n",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("=%d\n",nisum); }
参考文献:
同济大学数学系 工程数学—线性代数 北京:高等教育出版社 2007
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:线代:求解排列中的逆序数-创新互联
网站地址:https://www.cdcxhl.com/article36/eshsg.html
成都网站建设公司_创新互联,为您提供App开发、网页设计公司、网站改版、服务器托管、网站设计、微信公众号
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联