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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱东方 中级黑马   /  2012-7-10 18:36  /  1783 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 朱东方 于 2012-7-10 20:41 编辑

/*
给数组进行排序。
*/

import java.util.*;
class  ArrayText2
{
//打印数组:
public static void printArray(int[] arr)
{
  System.out.print("[");
  for(int x=0;x<arr.length;x++)
  {
   if(x!=arr.length-1)
    System.out.print(arr[x]+",");
   else
    System.out.println(arr[x]+"]");
  }
}
//位置置换
public static void swap(int[] arr,int a,int b)
{
  int temp = arr[a];
  arr[a] = arr;
  arr = temp;
}
public static void main(String[] args)
{
  int[] arr = {3,2,5,8,0,1};
  //selectSort(arr);
  printArray(arr);
//bubbleSort(arr);
  
//java自带升序排列
  Arrays.sort(arr); //java自带排序。结果是:从小到大排的。怎么从大到小排序(java自带的功能)。
  printArray(arr);

}
//选择排序:大到小
public static void selectSort(int[] arr)
{
  for(int x=0;x<arr.length-1;x++)
  {
   for(int y=x+1;y<arr.length;y++)
   {
    if(arr[x]<arr[y])
     swap(arr,x,y);
   }
  }
}
//冒泡排序:大到小
public static void bubbleSort(int[] arr)
{
  for(int x=0;x<arr.length-1;x++)
  {
   for(int y=0;y<arr.length-x-1;y++)
   {
    if(arr[y]<arr[y+1])
     swap(arr,y,y+1);
   }
  }
}

}

11 个回复

倒序浏览
只需回答问题,代码粘上去的--位置置换那的错误我知道,可是改不了。
回复 使用道具 举报
java自带的功能是对指定的 int 型数组按数字升序进行排序,没有从大到小的,要不就重写下compareable,自己定义一个比较
回复 使用道具 举报
我查了一下JDK1.6的帮助文档,还真没找到楼主需要的从大到小的降序排列,所以只能自己再手写一个降序的方法咯,写起来就容易了,只要用升序排列的结果反序保存在新数组里就好了。
位置置换那里的代码应该是,
public static void swap(int[] arr,int a,int b)
{
  int temp = arr[a];
  arr[a] = arr[b];
  arr[b] = temp;
}

希望有帮到你~~
回复 使用道具 举报
郑小杰 发表于 2012-7-10 19:23
java自带的功能是对指定的 int 型数组按数字升序进行排序,没有从大到小的,要不就重写下compareable,自己 ...

既然没有就拉到了,今天看见了就问问 谢谢了
回复 使用道具 举报
曹恒业 发表于 2012-7-10 19:36
我查了一下JDK1.6的帮助文档,还真没找到楼主需要的从大到小的降序排列,所以只能自己再手写一个降序的方法 ...

谢谢了,还帮我查:handshake
回复 使用道具 举报
韦念欣 黑马帝 2012-7-10 20:53:18
7#
楼主不需要重写比较器,可以直接使用Collections中的静态方法reverseOrder()强行逆转指定比较器的顺序,这样方便多了。
回复 使用道具 举报
韦念欣 发表于 2012-7-10 20:53
楼主不需要重写比较器,可以直接使用Collections中的静态方法reverseOrder()强行逆转指定比较器的顺序,这 ...

这样啊,我还没学到那块。以后估计就能明白了。谢谢了
回复 使用道具 举报
曹俊 中级黑马 2012-7-10 21:57:02
9#

位置置换的代码如下:int temp = int[x];
                                   int[x] = int[y];
                                   int[y] = temp;
希望对你有帮助哈,因为我今天刚敲了很多边数组冒泡和选择排序的代码,所以对这个现在很熟悉~~~
回复 使用道具 举报
曹俊 发表于 2012-7-10 21:57
位置置换的代码如下:int temp = int[x];
                                   int[x] = int[y];
         ...

看的很仔细啊。位置置换那块,我复制过来的本来有,发表出来就缺了。

你指的那出错误,我是想打印出这样的效果:  [3,2.....]
回复 使用道具 举报
朱东方 发表于 2012-7-10 22:02
看的很仔细啊。位置置换那块,我复制过来的本来有,发表出来就缺了。

你指的那出错误,我是想打印出这样 ...

好吧,看来我理解错了...{:3_46:}
回复 使用道具 举报
曹俊 发表于 2012-7-10 22:07
好吧,看来我理解错了...

呵呵,代码有点乱了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马