JAVA排序记录

//创建两个数组并进行初始化
        final int N=50000;
        int[] nums1=new int[N];
        int[] nums2=new int[N];
        for (int i = 0; i < nums1.length; i++) {
                nums1[i]=(int)(Math.random()*50000);
                nums2[i]=(int)(Math.random()*50000);
            
        }
        
        int temp=0;
        //冒泡排序
        long startTime=System.currentTimeMillis();//记录下程序运行的开始时间
        for (int i = 0; i < nums1.length-1; i++) {//两两交换的话只需要交换数组长度-1次即可    
            for (int j = 0; j < nums1.length-1-i; j++) {//每一次经过一次外层循环则内层循环就少一次即是nums1.length-1-i
                 if(nums1[j]>nums1[j+1]) {
                 temp=nums1[j];
                  nums1[j]=nums1[j+1];
                  nums1[j+1]=temp;}
                  
            }
        }
        long endTime=System.currentTimeMillis();//记录下程序运行的结束时间
        
        for (int i = 0; i < nums1.length; i++) {
            System.out.println(nums1[i]);
        }
        
        System.out.println("冒泡排序所用时间为"+(endTime-startTime)+"毫秒");

        
        
        
        //选择排序
         startTime=System.currentTimeMillis();
        for (int i = 0; i < nums2.length; i++) {//外层循环控制选择次数
            int min=nums2[i];//假定外层循环此次的值为最小值
            int minIndex=i;//记录最值的索引
            for (int j = i+1; j < nums2.length; j++) {//从最小值之后进行判断是否有比其还小的值
                if(nums2[j]<min) {
                    min=nums2[j];
                    minIndex=j;//记录下最小值的索引,
                    
                }
                
            }
            //等到内层循环结束后进行交换此时取到的是最小值
            temp=nums2[i];
            nums2[i]=nums2[minIndex];
            nums2[minIndex]=temp;
            
        }
         
     endTime=System.currentTimeMillis();
        
        for (int i = 0; i < nums2.length; i++) {
            System.out.println(nums2[i]);
        }
        
        System.out.println("选择排序所用时间为"+(endTime-startTime)+"毫秒");

猜你喜欢

转载自www.cnblogs.com/lzq-java/p/9297574.html