问题描述
1inttemp;2int[]arrSort=newint[]{10,8,3,5,6,7,9};3for(inti=0;i<arrSort.Length;i++)4{5for(intj=i+1;j<arrSort.Length;j++)///orfor(intj=0;j<arrSort.Length-1-i;j++)[/color]后面这种怎么去理解?6{7if(arrSort[j]<arrSort[i])8{9temp=arrSort[j];10arrSort[j]=arrSort[i];11arrSort[i]=temp;12}13}14}
解决方案
本帖最后由 qq_35292392 于 2016-06-12 21:30:02 编辑
解决方案二:
冒泡排序,决不可能随便地进行if(arrSort[j]<arrSort[i])
这种比较。冒泡排序只在相邻的两个元素之间比较,这才叫做冒泡。也就是顶多会写if(arrSort[j]<arrSort[j-1])
这种代码。
解决方案三:
像那种if(arrSort[j]<arrSort[i])
的算法,出现在选择排序之类算法中。你要有空间想象的能力。如果没有直观的、隐喻的想象力,而只会死抠程序代码,那么学习编程就累了,就缺乏一些必要的东西了。
解决方案四:
比较过的就不再比较for(intj=i+1;j<arrSort.Length;j++)是从前算起for(intj=0;j<arrSort.Length-1-i;j++)是从后计算j<arrSort.Length-1-i根据交换律,得j+1+i<arrSort.Length就是第一种写法
时间: 2024-08-25 05:33:42