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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

10黑马币
package vom.vice.Interface;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Random;

/**
* 5,编写程序:生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
*             ( 自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出
* @author Administrator
*   求: 自定义排序算法,禁用Collections.sort方法和TreeSet,        {:3_65:}大神补全代码.....................
*/
public class InterfaceDemo2 {

        public static void main(String[] args) {
               
                ArrayList<Integer> list=new ArrayList<Integer>();               
            for(int i=0;i<5;i++){              
                    Random r=new Random(); //生成随机数
                int sum=r.nextInt(10)+1;  //1至10之间的随机整数      
                      list.add(sum); //集合添加元素
            }


        //Collections.sort(list);
        for(Integer s:list){
                System.out.println(s);
        }
        }
       

}







最佳答案

查看完整内容

怎么感觉都写的代码一堆堆的,难看的要命。我也写个吧。

17 个回复

正序浏览
说着禁用 collections sort 和 treeset
回复 使用道具 举报
public class TEST {

        public static void main(String[] args) {
                Random r = new Random();
                List<Integer> al = new ArrayList<>();
                al.add(r.nextInt(9)+1);
                al.add(r.nextInt(9)+1);
                al.add(r.nextInt(9)+1);
                al.add(r.nextInt(9)+1);
                al.add(r.nextInt(9)+1);
                List<Integer> newal=sortMethod(al);
                for (Integer integer : newal) {
                        System.out.println(integer);
                }
        }

        private static List<Integer> sortMethod(List<Integer> al) {
               
                for (int i = al.size()-1;i>0; i--) {
                        for (int j =0 ; j < i; j++) {
                                if(al.get(j)>al.get(j+1))
                                        Collections.swap(al, j, j+1);
                        }
                }
                return al;
        }

}
回复 使用道具 举报
受教了      
回复 使用道具 举报
进来赐教  真多大神
回复 使用道具 举报
赐教了!!
回复 使用道具 举报
求学之路,来之不易啊
回复 使用道具 举报
厉害啊啊啊
回复 使用道具 举报
嗯  明白了
回复 使用道具 举报
邓士林 发表于 2015-1-13 15:49
三个人的代码都看了,一楼的排序核心代码跟三楼没啥区别,都是用的冒泡排序的翻版(算法根本不满足冒泡排序 ...

是选择排序把
回复 使用道具 举报
学习了!
回复 使用道具 举报
学习了。。
回复 使用道具 举报
三个人的代码都看了,一楼的排序核心代码跟三楼没啥区别,都是用的冒泡排序的翻版(算法根本不满足冒泡排序的定义),效率在所有排序算法中最差的,二楼的算法虽然长点,但是它通过设置一个标志,减少数据的交换次数,但是比较次数,三个人的是一样的,相比较下,二楼的好点。但是对于5个数据的排序,基本看不出来,数据比较大的时候就有差别了。
回复 使用道具 举报
小徐_y8nUx 来自手机 中级黑马 2015-1-13 12:12:33
报纸
学习了!!!
回复 使用道具 举报
yuanlingqi 发表于 2015-1-8 16:25
怎么感觉都写的代码一堆堆的,难看的要命。我也写个吧。

大神!受教了
回复 使用道具 举报
  1. import java.util.*;

  2. /**
  3. * 5,编写程序:生成5个1至10之间的随机整数,存入一个List集合,
  4. * 编写方法对List集合进行排序
  5. *             ( 自定义排序算法,禁用Collections.sort方法和TreeSet),
  6. * 然后遍历集合输出
  7. * @author zhengyk
  8. *   求: 自定义排序算法,禁用Collections.sort方法和TreeSet,        
  9. * 大神补全代码.....................
  10. */
  11. public class InterfaceDemo2 {
  12.    public static void main(String[] args) {
  13.                
  14.         ArrayList<Integer> list=new ArrayList<Integer>();               
  15.          
  16.         for(int i=0;i<5;i++){               
  17.              Random r=new Random(); //生成随机数
  18.              int sum=r.nextInt(10)+1;  //1至10之间的随机整数      
  19.              list.add(sum); //集合添加元素
  20.         }

  21.         System.out.print("排序前的数据: ");
  22.         printList(list);
  23.         sort(list);
  24.         System.out.print("排序后的数据: ");
  25.         printList(list);
  26.         //Collections.sort(list);
  27.         /*for(Integer s:list){
  28.                 System.out.println(s);
  29.         }*/
  30.     }
  31.       
  32.     public static List sort(List<Integer> list) {
  33.         Integer[] arr = new Integer[list.size()];
  34.         arr = list.toArray(arr);   //转为数组方便遍历
  35.         list.clear();

  36.         //做选择排序
  37.         int k;  
  38.         Integer temp;
  39.         for (int i=0; i<arr.length; i++) {
  40.             k = i;
  41.             for (int j=k+1; j<arr.length; j++) {

  42.                 if (arr[k] > arr[j]) {
  43.                     k = j;      //完成一次排序后,最小值的索引值存放在k中
  44.                 }
  45.             }

  46.             if (k != i) {
  47.                     temp = arr[i];
  48.                     arr[i] = arr[k];
  49.                     arr[k] = temp;
  50.             }
  51.             list.add(arr[i]);    //一次排序完成后插入数据
  52.         }

  53.         return list;
  54.     }

  55.     //打印数据
  56.     public static void printList(List<Integer> list) {
  57.         for (Integer i: list) {
  58.             System.out.print(i + " ");
  59.         }
  60.         System.out.println();
  61.     }
  62. }

复制代码

在你的基础上修改的,这样可以不?
回复 使用道具 举报
  1. package vom.vice.Interface;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.Random;

  6. /**
  7. * 5,编写程序:生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
  8. *             ( 自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出
  9. * @author zhengyk
  10. *   求: 自定义排序算法,禁用Collections.sort方法和TreeSet,        大神补全代码.....................
  11. */
  12. public class InterfaceDemo2{
  13.    public static void main(String[] args) {
  14.                
  15.          ArrayList<Integer> list=new ArrayList<Integer>();               
  16.          
  17.                  for(int i=0;i<5;i++){               
  18.              Random r=new Random(); //生成随机数
  19.              int sum=r.nextInt(10)+1;  //1至10之间的随机整数      
  20.              list.add(sum); //集合添加元素
  21.          }

  22.                 for (int x = 0;x<list.size()-1 ;x++ )
  23.                 {
  24.                         for (int y =x+1 ;y<list.size() ;y++ )
  25.                         {
  26.                                 if(list.get(x)>list.get(y))
  27.                                 {
  28.                                         Integer temp;
  29.                                         temp = list.get(x);
  30.                                         list.set(x,list.get(y));
  31.                                         list.set(y,temp);
  32.                                 }
  33.                         }
  34.                 }


  35.         //Collections.sort(list);
  36.         for(Integer s:list){
  37.                 System.out.println(s);
  38.         }
  39.     }
  40.       
  41. }

复制代码
回复 使用道具 举报
怎么感觉都写的代码一堆堆的,难看的要命。我也写个吧。
  1. @Test
  2.     public void testJson3() {
  3.         //生成随机数
  4.         ArrayList<Integer> list = generateRandomList(5);
  5.         //排序
  6.         sort(list);
  7.         //打印
  8.         System.out.println(list);
  9.     }

  10.     /**
  11.      * 冒泡排序
  12.      * @param list 排序list
  13.      */
  14.     private void sort(ArrayList<Integer> list) {
  15.         int len = list.size();
  16.         int temp = 0;
  17.         for (int i = 0; i < len; i++) {
  18.             for (int j = i + 1; j < len; j++) {
  19.                 if (list.get(i) > list.get(j)) {
  20.                     temp = list.get(i);
  21.                     list.set(i, list.get(j));
  22.                     list.set(j, temp);
  23.                 }
  24.             }
  25.         }
  26.     }

  27.     /**
  28.      * 生成随机数
  29.      * @param count 随机数个数
  30.      * @return 随机数列表
  31.      */
  32.     private ArrayList<Integer> generateRandomList(int count) {
  33.         ArrayList<Integer> list = new ArrayList<Integer>();
  34.         for (int i = 0; i < count; i++) {
  35.             list.add(new Random().nextInt(10) + 1);
  36.         }
  37.         return list;
  38.     }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马