黑马程序员技术交流社区

标题: 木有看懂,帮忙看下这个程序。 [打印本页]

作者: nuoxi0318    时间: 2013-7-14 20:13
标题: 木有看懂,帮忙看下这个程序。
本帖最后由 nuoxi0318 于 2013-7-14 21:19 编辑


  1. <BLOCKQUOTE>
  2. <P>public void SelectSortProcedure()//选择排序
  3. {
  4. int pass,i,temp,k; </P>
  5. <P>for(pass=0;pass<DataArayy.length;pass++) //选择多次,有序子列增长
  6. {
  7. for(i=pass,k=i;i<DataArayy.length;i++)//一次选择过程无序子列减少 </P>
  8. <P>if(DataArayy<DataArayy[k])  //选择剩余排序中最小者
  9. k=i ;
  10. temp = DataArayy[pass];//排在剩余序列的最前面
  11. DataArayy[pass] = DataArayy[k];
  12. DataArayy[k] = temp; </P>
  13. <P>for(i=0;i<DataArayy.length;i++)
  14. SortPro[pass+1] = DataArayy;//记录本论选择后的数据排列情况 </P>
  15. <P>}
  16. } </P>
复制代码
不明白第2个FOR循环的范围到那里,不明白K=I的话不一直是自身在比较么?

作者: 白堇翎    时间: 2013-7-14 20:38
本帖最后由 白堇翎 于 2013-7-14 20:45 编辑
  1. public void SelectSortProcedure()//选择排序
  2. {
  3. int pass,i,temp,k;

  4. for(pass=0;pass<DataArayy.length;pass++) //选择多次,有序子列增长
  5. {
  6. for(i=pass,k=i;i<DataArayy.length;i++)//一次选择过程无序子列减少

  7. if(DataArayy<DataArayy[k])  //选择剩余排序中最小者
  8. k=i ;
  9. temp = DataArayy[pass];//排在剩余序列的最前面
  10. DataArayy[pass] = DataArayy[k];
  11. DataArayy[k] = temp;

  12. for(i=0;i<DataArayy.length;i++)
  13. SortPro[pass+1] = DataArayy;//记录本论选择后的数据排列情况

  14. }
  15. }
复制代码
修正
  1. public void SelectSortProcedure()//选择排序
  2. {
  3. int pass,i;
  4. int[] DataArayy = {};
  5. for(pass=0;pass<DataArayy.length;pass++) //选择多次,有序子列增长
  6. {
  7. for(i=pass,;i<DataArayy.length;i++) [//一次选择过程无序子列减少

  8. if(DataArayy[i]<DataArayy[pass]) {  //选择剩余排序中最小者
  9. DataArayy[pass]=DataArayy[i] ^DataArayy[pass]; //用与运算换位
  10. DataArayy[i]=DataArayy[i]^DataArayy[pass];
  11. DataArayy[pass] = DataArayy[i]^DataArayy[pass];
  12. }
  13. }
  14. }
  15. }
复制代码

作者: nuoxi0318    时间: 2013-7-14 20:41
白堇翎 发表于 2013-7-14 20:38
修正

:( 搞半天没找到插入代码在什么地方。。。
作者: 杨兴庭    时间: 2013-7-14 20:59
-------------------坚持学习,黑马因你而精彩---------------

a.jpg (45.79 KB, 下载次数: 0)

a.jpg

b.jpg (99.21 KB, 下载次数: 0)

b.jpg

作者: nuoxi0318    时间: 2013-7-14 21:04
白堇翎 发表于 2013-7-14 20:38
修正

:P3Q  了解思密达
作者: nuoxi0318    时间: 2013-7-14 21:05
杨兴庭 发表于 2013-7-14 20:59
-------------------坚持学习,黑马因你而精彩---------------

:#搞明白了,
作者: wll_sx1990    时间: 2013-7-14 22:53
所谓选择排序,通俗的讲就是按次序可以使从前往后或者从后往前拿出数据与其他的数据比较,按照排序原则(递增或递减)呼唤数据,从而在这个位置上得到剩下的包括这个元素的最小或者最大的元素,而已经拿出来也就是第二个for中k记录下标位置的所有元素都已经拍好了序。所以是一直循环到数组结束,以保证k记录的那个位置的元素是剩下的元素中最小或者最大的元素。这就是选择排序,就是个不断选择的过程。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2