黑马程序员技术交流社区

标题: 再一次被数组打败~~~ [打印本页]

作者: 于XINCHENG    时间: 2013-8-31 00:45
标题: 再一次被数组打败~~~
  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. }
复制代码
以上代码是使用直接排序法操作的数组,此数组有一点好处,就是不需要再进行遍历,就可以直接打印;但是!我想了半天,也没想出不需要再进行遍历就可以直接打印出排好序的数组(用冒泡排序),到底能不能用冒泡排序写出来?

作者: xiaoxu    时间: 2013-8-31 01:16
  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. }
复制代码

作者: yanglfree    时间: 2013-8-31 01:28
果断可以用冒泡法啊  但是冒泡法也要用遍历啊
作者: 范龙波    时间: 2013-8-31 01:36
你发上来的这段程序就是选择排序啊!  通过 一个字符串 str记录排好序的元素. 循环结束将这个字符串返回  ,我这里也只是帮你测试一下.你可以看一下.运行结果   .
结果:




作者: 于XINCHENG    时间: 2013-8-31 02:09
xiaoxu 发表于 2013-8-31 01:16

这个是直接排序/选择排序,我想不出的是冒泡排序的无遍历直接打印的方法

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

看清楚,我这个就是冒泡排序。





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