栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

归并排序与找逆序对数的相关问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

归并排序与找逆序对数的相关问题

1.while

可以没有{},此时于while()后第一个分号 “;” 前面的语句就是循环体。

可以同时有{}和分号“;” , 也就是说,当有花括号 {} 结尾可不需要分号, 当然你加了不也会出错,但不要while();

【总结】在C语言中,用;和{}的作用都是一个:用于语句分隔,告诉编译器当语句遇到;或者{}中的 “}”时,说明执行该语句结束。所以说有点二选一的感觉,但让如果两个都同时用也不会出错(注不要while(); 不要for(); ,这些C语言编译器是允许的,但是实际上这样做没意义,这样做相当于循环体为空了,什么也没干)

while(){}    //有 {} 结尾可不需要分号, 当然你加了不也会出错,但不要while();。
 
但是要注意,如果是do while结构,在while()后面必须有;
do{}while(); //要分号结束 
第一个例子循环体在while的前面,先执行的是循环体,再判断条件。而条件是不能用花括号{}括起来的的,在C语言中每段程序之间都要用分号隔开的,所以就要分号; 第二个列子是先判断条件,再执行循环体,而循环体是用花括号{}包起来的,而在C语言中花括号和分号不能同时在一起,所以就没有分号;就相当于if(){}语句一样。

2.当逆序对在左右两区域之间时,不用管之前归并是左右位置的交换(因为归并是左右是分开操作的,不会出现右侧数据到左侧的情况),又因为左侧位置已按大小排好,因此左右逆序对数只需mid-i+1即可判断左侧之于右侧的逆序对数

3.int范围约为2e9而本题逆序对数为(1e5*1e5)/2=5e9,超出int范围,故用longlong

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号