黑马程序员技术交流社区

标题: 排序结果不对,求解释, [打印本页]

作者: yunmu    时间: 2016-4-22 22:44
标题: 排序结果不对,求解释,
public class Test4 {
        public static void main(String[] args) {
                List<String> list1 = new ArrayList<>();
                list1.add("b");
                list1.add("f");
                list1.add("e");
                list1.add("c");
                list1.add("a");
                list1.add("d");
                sort1(list1);
                System.out.println(list1);        // 要求排序结果a, b, c, d, e, f
                }

        private static void sort1(List<String> list1) {//排序方法
               
                String[] str = new String[list1.size()];//创建了两个数组,一个String类型,一个char类型
                char[]        arr = new char[list1.size()];//大小都是和list1的大小相同
               
                for (int i = 0; i <list1.size(); i++) {//从集合list中获取各个字符串
                         str[i] = list1.get(i);       //获取字符串存在String类型数组str中
                         arr[i] = str[i].charAt(0);//获取字符串中的单个字符存在arr中
                }
                     for (int i = 0; i < arr.length-1; i++) {//冒泡法进行排序
                       
                        for (int j = 0; j < arr.length-1-i; j++) {
                               
                                if(arr[j] > arr[j+1]){//比较字符,在集合中进行交换排序
                                        String str1 = list1.get(j);
                                        String str2 = list1.get(j+1);
                                        list1.set(j, str2);
                                        list1.set(j + 1, str1);
                                       
                                }
                        }
                }
       
        }
作者: 向前爬的虫子    时间: 2016-4-22 23:12
简单看了一下,感觉在冒泡排序的时候有问题,应该排完序,在添加到集合中
作者: heimoshui    时间: 2016-4-23 00:13
貌似冒泡排序有问题
for(i = 0; i<arr.length-1; i++ ) {
    for(j = 1; j<arr.length; j++) {
        if(arr[i].compareTo(arr[j])>0) {
           String temp = arr[i];
           arr[i] = arr[j];
           arr[j] = temp;
        }
    }
}

作者: xzy645181797    时间: 2016-4-23 21:20
private static void sort2 (List<String> list){
                TreeSet<String> ts = new TreeSet<>();
                for (String s : list) {
                        ts.add(s);
                }
                list.clear();
                list.addAll(ts);
               
               
        }
用TreeSet可以
作者: yunmu    时间: 2016-4-29 19:42
向前爬的虫子 发表于 2016-4-22 23:12
简单看了一下,感觉在冒泡排序的时候有问题,应该排完序,在添加到集合中

...一直没收到提醒,我不是用set方法添加了么
作者: yunmu    时间: 2016-4-29 19:46
heimoshui 发表于 2016-4-23 00:13
貌似冒泡排序有问题
for(i = 0; i

你这是选择排序吧,我做过啊,可是冒泡错在哪里了?
作者: yunmu    时间: 2016-4-29 19:47
xzy645181797 发表于 2016-4-23 21:20
private static void sort2 (List list){
                TreeSet ts = new TreeSet();
                for (String s : list) {

多谢,不过那时候我还没学
作者: Erry    时间: 2016-4-29 19:51
你这对我来说太难了。
作者: heimoshui    时间: 2016-4-30 13:13
yunmu 发表于 2016-4-29 19:46
你这是选择排序吧,我做过啊,可是冒泡错在哪里了?


这样呢,冒泡,选择分不太清楚
for(i = 0; i<arr.length-1; i++ ) {  
   for(j = 0; j<arr.length-1-i; j++)      
         if(arr[j].compareTo(arr[j+1])>0){
          String temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp
        }
    }
}




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