A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 木糖醇 中级黑马   /  2013-9-1 16:56  /  1398 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 木糖醇 于 2013-9-1 17:23 编辑
  1. class paixu
  2. {
  3. public static void main(String[] args)
  4. {
  5. int []arr={3,2,4,1};
  6. printArray(arr);
  7. selectSort(arr);
  8. printArray(arr);
  9. }
  10. public static void selectSort(int []arr)
  11. {
  12. for(int i=1;i<arr.length-1;i++)
  13. {

  14. for(int x=i+1;x<arr.length;)
  15. {
  16. if(arr[x]<arr[i])
  17. {
  18. int num=arr[x];
  19. arr[x]=arr[i];
  20. arr[i]=num;
  21. }
  22. }
  23. }
  24. }
  25. public static void printArray(int[] arr)
  26. {
  27. for(int x=0;x<arr.length;x++)
  28. {
  29. if(x!=arr.length-1)
  30. System.out.print(arr[x]+", ");
  31. else
  32. System.out.println(arr[x]);
  33. }
  34. }
  35. }
复制代码
为什么这段代码执行之后只有排序之前的结果,而不没有排序之后的结果?

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报

啊   这个确实疏忽了
不过执行之后是这样,两个都没有排序

回复 使用道具 举报
本帖最后由 范龙波 于 2013-9-1 17:13 编辑

还有 你外层 for的角标应该从0开始 !
回复 使用道具 举报
范龙波 发表于 2013-9-1 17:11
还有 你外层 for的角标应该从0开始 !

{:soso_e100:}改了之后真的可以了    谢谢啦
回复 使用道具 举报
访问数组的角标都是从0开始的。
回复 使用道具 举报
wrswuxiaoyan 发表于 2013-9-1 18:55
访问数组的角标都是从0开始的。

嗯嗯    谢谢指点
回复 使用道具 举报
本帖最后由 毋须繁华 于 2013-9-1 20:41 编辑
  1.                 int[] arr = {3,4,6,8,1,9};
  2.                 for(int k = 1;k<arr.length-1;k++){              //设置要进行循环的次数,
  3.                         for(int x = 0;x<arr.length-k;x++){    //从第一个索引位开始 和下一位对比
  4.                                 if(arr[x]>arr[x+1]){                //如果下一索引位的数值大与本索引位的数值
  5.                                         int temp = arr[x+1];   
  6.                                         arr[x+1] = arr [x];         //把大的换位置至后面。
  7.                                         arr[x] = temp;                       
  8.                                 }
  9.                         }
  10.                 }
  11.                 for(int i=0;i<arr.length;i++){                 //遍历输出排序后的数组
  12.                         System.out.print(arr[i]+"  ");
复制代码
从大到小进行冒泡排序

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
亲,你的这个运行出来时从小到大的排序啊,for(int x = 0;x<arr.length-k;x++)这一步应该是这样的for(int x = 0;x<arr.length-k-1;x++)减1是为了防止数组角标越界,减K是因为让每次比较的元素减少!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马