2012-02-17 498 views
-3

如何排序Java中的char数组?我知道我可以使用java.util.Arrays.sort(),但如果我手动想要排序它?使用冒泡排序还是什么?在java中对char数组排序

注意字符串是“cab”,排序后的结果应该是“abc”。我不知道如何排序,我知道如何排序整数,但我不知道如何对char数组进行排序。

这里是我的代码:

String s1 = "cab"; 
char[] arr; 
arr = s1.toCharArray(); 

//Could use 
//java.util.Arrays.sort(arr); 
//But want to do it manually using something like bubble sort 

s1 = new String(arr); 
+3

编写一个代码进行排序。 – 2012-02-17 05:32:40

+0

你需要为你的任务使用冒泡排序吗? – Woot4Moo 2012-02-17 05:32:47

+0

目前尚不清楚你在问什么。你问如何[写一个气泡排序算法](http://stackoverflow.com/questions/832765/whats-a-bubble-sort)?或者你问如何访问数组中的单个项目? – Lee 2012-02-17 05:35:26

回答

3

字符可以直接比较的比较操作符重载。例如

arr[1]>arr[0] 

是有效的并且给出了正确。所以在气泡排序算法中把它们看作整数。

1

我不知道天气这个解决方案是最好的方法,说实话我不认为它是。

但是心中已经制成的小片的代码排序在下面的步骤的数组:

使一个for循环,从0到array.size() * array.size()

做一个索引变量(INT),这是0出方在循环的循环

添加一个尝试捕捉,抓住OutOfBoundsException,在catch设置索引在尝试你您的阵列的 '索引',

char c = array[index] 

,并比较指数+1

c.compareTo(array[index +1]) 

如果这是一个正数> 0切换这两个项目位阵列[指数]阵列[索引+ 1]

如果它没有意义的,你,我可以提供一个代码示例,但从现在不是前2小时,约..

这就是我的意思:

public static ArrayList<mContact> SortByName(ArrayList<mContact> arr) 
{ 
int i = 0; 
    for (int o = 0; o < arr.size() * arr.size(); o++) 
    { 
     try 
     { 
      int c = arr.get(i).getName().compareTo(arr.get(i + 1).getName()); 
      if (c > 0) 
      { 
       mContact con = new mContact(arr.get(i).getName()); 

       arr.get(i).setName(arr.get(i+1).getName()); 

       arr.get(i+1).setName(con.getName()); 

      } 
      i++; 
     } 
     catch (IndexOutOfBoundsException ex) 
     { 
      i = 0; 
     } 
    } 
    return arr; 
} 

的排序按升序排列联系人姓名列表。

compareTo方法返回一个整数,表示两个字符串的差异。如果它们相同,则为0!

+0

是的示例代码会有帮助。 – cdn 2012-02-17 05:46:12

+0

我写的字符串的作品,你可能使用Sesha H的回答也做了很多优化 – f2lollpll 2012-02-17 05:49:06

2

使用冒泡排序还是什么?

是的,冒泡排序会起作用。或者您可以使用其他众所周知的排序算法中的任何一种;例如如在this Wikipedia page中列出的...或任何有关数据结构和算法的良好教科书。

(但不,我不打算为你编码。)

0

您可以比较每个字符的ASCII值,或使用parseInt将每个字符转换为int并比较它们的值。