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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yunmu 中级黑马   /  2016-4-22 22:44  /  701 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
                                       
                                }
                        }
                }
       
        }

8 个回复

倒序浏览
简单看了一下,感觉在冒泡排序的时候有问题,应该排完序,在添加到集合中
回复 使用道具 举报
貌似冒泡排序有问题
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;
        }
    }
}
回复 使用道具 举报
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可以
回复 使用道具 举报
向前爬的虫子 发表于 2016-4-22 23:12
简单看了一下,感觉在冒泡排序的时候有问题,应该排完序,在添加到集合中

...一直没收到提醒,我不是用set方法添加了么
回复 使用道具 举报
heimoshui 发表于 2016-4-23 00:13
貌似冒泡排序有问题
for(i = 0; i

你这是选择排序吧,我做过啊,可是冒泡错在哪里了?
回复 使用道具 举报
yunmu 中级黑马 2016-4-29 19:47:49
7#
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:13
8#
你这对我来说太难了。
回复 使用道具 举报
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
        }
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马