if (kk[i]>= kk[j]) // 此句错误?????????????

问题描述

索引超出了数组的范围:if(kk[i]>=kk[j])//此句错误?????????????{temp[m++]=kk[i++];//firsttable}else//第二个有序表记录的KEY小于第一个有序表记录的KEY{temp[m++]=kk[j++];//secondtable}代码为:publicvoidMerge(int[]kk,intlen){intm=1;//getsrartpostiontotemptableintl1=0;//thefirsttableofstartpositioninth1;//endpositionofthefirsttableinth2;//endpositionofthesecondtableintl2=0;//startpositionofthesecondtableinti=0;//recordpositiontothefirsttableintj=0;//recordpositiontothesecondtableint[]temp=newint[kk.Length];//savemergedatatoseqlisttable//mergecodewhile(l1+len==kk.Length){l2=l1+len;//startpositiontothesecondsqllisttableh1=l2-1;//endpositiontothefirstseqlisttable//注意:第二个有序表的结束位置有二种可能1数组的长度2.l2+len-1if(l2+len-1<kk.Length){h2=l2+len-1;//tablelengthincludekk[0]}else{h2=kk.Length;}i=l1;//makestartpositiontothefirstseqlisttable.j=l2;//setstartpositiontothesecondseqlisttable//recordisnotsorttoswqlisttablewhile((i<=h1)&&(j<=h2)){//第一个有序表记录的KEY小于第二个有序表记录的KEYif(kk[i]>=kk[j]){temp[m++]=kk[i++];//firsttable}else//第二个有序表记录的KEY小于第一个有序表记录的KEY{temp[m++]=kk[j++];//secondtable}}//第一个表的记录没有排完while(i<=h1){temp[m++]=kk[i++];}//第二个表的记录没有排完while(j<=h2){temp[m++]=kk[j++];}l1=h2+1;}i=l1;//原顺序表中没有排完的记录while(i<kk.Length){temp[m++]=kk[i++];}//临时顺序表中记录复制到原顺序表中,使原顺序表记录有序for(i=0;i<kk.Length;++i){kk[i]=temp[i];}}

解决方案

解决方案二:
索引超出了数组的范围如果程序已经报这个错误,当然就是这个错误了.代码写的比较复杂,变量太多,还中英文注释混用.传入的len变量也不知道是做什么用的。总之呢,怕头疼没细看。简单的来说,你应该跟踪一下变量,看看在哪一句的时候报错,报错时变量值都是多少,同时关注一下数组是哪个,数组大小是多少。这样就简单直观多了,也更容易定位错误。
解决方案三:
kk[i]>=kk[j]是否有值?先排除Null值

时间: 2024-09-10 09:39:15

if (kk[i]&amp;gt;= kk[j]) // 此句错误?????????????的相关文章

k-means-请教朋友们,python中numpy.min(dataset[:,j]) 这句话是什么意思?

问题描述 请教朋友们,python中numpy.min(dataset[:,j]) 这句话是什么意思? 各位大神好,问题是这样的: 最近在看K-means聚类算法的python实现版本,看到了一个朋友写的程序,下面是选取数据集dataSet的k个初始中心的函数 各位大神好,问题是这样的: 最近在看K-means聚类算法的python实现版本,看到了一个朋友写的程序,下面是选取数据集dataSet的k个初始中心的函数 18 def randCent(dataSet, k): 19 n = shap

完善自定义分页控件

上一篇写了一个简单的自定义分页控件,当时写的不够完善,不能自定义控件的样式.现在完善了,望同 大家共同探讨. 现在已经在网上发布的分页控件特别多,而且大多都功能特别强,但是之所以选择自己写,主要是因为自 己写可以根据自己的要求来设计,不用的功能就功能免了. 本控件可以自定义样式,而且传入的参数和其它常用的分页控件差不多,记录总数和一页的数量,是否自 定义样式,当页面数量特别多的时候,可以在分页信息栏中显示前几页和后几页. 具体代码如下: using System;using System.Col

SQL Server 常用SQL总结

  SQL Server 常用SQL总结 order by NAME collate Chinese_PRC_Stroke_CS_AS_KS_WS /*sqlserver分组不能以text,ntext,image类型的字段作为分组依据*/ --强制查询使用索引: select id from table_name with(index(索引名)) where num=@num --全文检索(name like '%abc%')(substring(cal_name ,1,3)='abc') se

《程序设计解题策略》——1.2 利用最小生成树及其扩展形式解题

1.2 利用最小生成树及其扩展形式解题 设G=(V,E,ω)是连通的有权无向图(节点集为V,边集为E,边权集为ω),连通图G中包含所有节点,且只有V-1条边的连通子图即为G的生成树.边权值和最小的生成树称为最小生成树.在现实生活中,最小生成树的原理和算法有着广泛的应用.程序设计竞赛中与最小生成树有关的试题一般有两类: 1) 构建最小生成树. 2) 应用最小生成树原理优化算法. 本节除了深入研讨最小生成树的性质和求解方法外,还给出了三种特殊类型生成树: 1) 最优比率生成树. 2) 最小k度限制生

C语言面试

最全的C语言试题总结 第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的

2011年全国软件大赛模拟题及参考答案(Java本科组)

非官方标注答案,如有不妥,请指出. 2011 模拟 java 本科 注意: 本套模拟题主要模拟命题形式与考核范围.真实竞赛题的数量.难度可能与此套模拟题有差异. 说明: 本试卷包含两种题型:"代码填空"与"程序设计". 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确.完整.所填写的代码不多于一条语句(即不能出现分号). 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果.注意:在评卷时使用的输入数据与试卷中给出的实例数据可能

C#的if条件

问题描述 谁能教教我,用ifelse怎么才能作出以下的结果?***************************************************************************我只做出来一个四角形stringstr;for(inti=1;i<10;i++)//{str="";for(intj=1;j<10;j++){if((i<6&&j<6&&j<6-i)==(i<10&&am

jquery ajax分页 js对象

Java代码   <div class="sub_menus module-manager">       <div class="module-list">           <table class="list" id="tab_mod">               <tr class="t_title">                   <

机器学习之旅---奇异值分解

     本次的讲解主要内容如下: 1.什么是奇异值分解?为什么任意实矩阵都存在奇异值分解? 2.怎么用C语言代码实现SVD分解? 3.实际应用: 基于SVD的图像压缩 基于SVD的协同过滤推荐系统 一.SVD奇异值分解概念     在多数情况下,数据中的一小段携带了数据集中的大部分信息,其他信息要么是噪声,要么就是毫不相干的信息.在线性代数中有很多矩阵分解技术,通过它们可以将原始矩阵表示成新的易于处理的形式.不同的矩阵分解技术具有不同的性质,有各自特定的应用场景.     奇异值分解SVD作为