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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于XINCHENG 中级黑马   /  2013-8-31 00:45  /  1411 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static String selectSort(int[] arr) {
  2. String str = “”;
  3. for (int i = 0; i < arr.length - 1; i++) {
  4. for (int j = i + 1; j < arr.length; j++) {
  5. if (arr[i] > arr[j]) {
  6. int temp = arr[i];
  7. arr[i] = arr[j];
  8. arr[j] = temp;
  9. }
  10. }
  11. str += arr[i] + “ , ”;
  12. }
  13. return str += arr[arr.length-1];
  14. }
复制代码
以上代码是使用直接排序法操作的数组,此数组有一点好处,就是不需要再进行遍历,就可以直接打印;但是!我想了半天,也没想出不需要再进行遍历就可以直接打印出排好序的数组(用冒泡排序),到底能不能用冒泡排序写出来?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

6 个回复

倒序浏览
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr=new int[]{25,45,11,3,2,48,61};
  6.                 System.out.println(arrayMethod_2(arr));
  7.         }
  8.         public static String arrayMethod_2(int[] arr)
  9.         {
  10.                 int temp=0;
  11.                 String str="";
  12.                 for(int i=0,length=arr.length;i<length-1;i++)
  13.                 {
  14.                         for(int j=0;j<length-1-i;j++)
  15.                         {
  16.                                 if(arr[j]<arr[j+1])
  17.                                 {
  18.                                         temp=arr[j];
  19.                                         arr[j]=arr[j+1];
  20.                                         arr[j+1]=temp;
  21.                                 }
  22.                         }
  23.                         str+=arr[length-i-1]+",";
  24.                 }
  25.                 return str+= arr[0];
  26.         }
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
果断可以用冒泡法啊  但是冒泡法也要用遍历啊
回复 使用道具 举报
你发上来的这段程序就是选择排序啊!  通过 一个字符串 str记录排好序的元素. 循环结束将这个字符串返回  ,我这里也只是帮你测试一下.你可以看一下.运行结果   .
结果:



评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报

这个是直接排序/选择排序,我想不出的是冒泡排序的无遍历直接打印的方法
回复 使用道具 举报
你这个排序方法的内循环结束后,最值就出现在了0角标上,第二次,最值出现在1角标上,以此类推。所以你在外循环调用arr[i]时刚好是每次内循环结束返回的头角标元素,所以按你返回的格式,最终就打印了排序好的,就算你重新写一个循环,那还不是和外循环一样吗?
回复 使用道具 举报
xiaoxu 中级黑马 2013-8-31 17:49:52
7#
于XINCHENG 发表于 2013-8-31 02:09
这个是直接排序/选择排序,我想不出的是冒泡排序的无遍历直接打印的方法
...

看清楚,我这个就是冒泡排序。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马