文档详情

VC指针字符串排序.ppt

发布:2018-02-18约4.65千字共14页下载文档
文本预览下载声明
第7章 指针 ——指针数组 字符串排序 * * void main() { char *str[]={“Flolow”,”BASIC”,”Great wall”,”Department”}; char *p1; int i,j,k; ... 例题8.9(P152~153)是将多个字符串排序,第一个定义语句是 C++编译后: 各字符串(数组)的首地址依次存入对应的指针数组元素中。 str[0] str[1] str[2] str[3] F o l l o w B A S I C G r e a t W a l l D e p a r t m e n t 独立的执行语句只有两个,主要算法是 str[0] str[1] str[2] str[3] void main() { char *str[]={“Flolow”,”BASIC”,”Great wall”,”Department”}; char *p1; int i,j,k; ... ... ... for(i=0;i3;i++) { k=i; for(j=i+1;j4;j++) if(strcom(str[k],str[j])0)k=j; if(k!=i) {p1=str[k];str[k]=str[i];str[i]=p1;} } ... ... F o l l o w B A S I C G r e a t W a l l D e p a r t m e n t 这是我们熟知的搜索下标的排序算法 搜索最小元素的下标j 赋给变量:k 独立的执行语句只有两个,主要算法是 str[0] str[1] str[2] str[3] void main() { char *str[]={“Flolow”,”BASIC”,”Great wall”,”Department”}; char *p1; int i,j,k; ... ... ... for(i=0;i3;i++) { k=i; for(j=i+1;j4;j++) if(strcom(str[k],str[j])0)k=j; if(k!=i) {p1=str[k];str[k]=str[i];str[i]=p1;} } ... ... F o l l o w B A S I C G r e a t W a l l D e p a r t m e n t strcom(串1,串2) 确定最小元素的比较函数 本例中是把第k与第j个字符串比较。两个串从第0个字符开始依次比较它们的代码,最后分出大小 str[0] str[1] str[2] str[3] void main() { char *str[]={“Flolow”,”BASIC”,”Great wall”,”Department”}; char *p1; int i,j,k; ... ... ... for(i=0;i3;i++) { k=i; for(j=i+1;j4;j++) if(strcom(str[k],str[j])0)k=j; if(k!=i) {p1=str[k];str[k]=str[i];str[i]=p1;} } ... ... F o l l o w B A S I C G r e a t W a l l D e p a r t m e n t strcom(串1,串2) 确定最小元素的比较函数 运算规则是:如果逗号左边(下标:k)的字符串大于右边(下标:j),则返回1,否则返回0 j循环结束时,变量k必然获得当前字符串最小的元素下标 此时:k=? str[0] str[1] str[2] str[3] void main() { ... ... for(i=0;i3;i++) { k=i; for(j=i+1;j4;j++) if(strcom(str[k],str[j])0)k=j; if(k!=i) {p1=str[k];str[k]=str[i];str[i]=p1;} } ... ... F o l l o w B A S I C G r e a t W a l l D e p a r t m e n t 在i循环中,k首先取i值。 当前最小的字符串就在第i个元素中 显然,此时k仍取i值 如果直到j循环结
显示全部
相似文档