java两种排序的演示(冒泡和选择排序法)

/**
 * 日期:2017.7.27
 * 作者:小孟鱼
 * 功能:演示各种排序
 */

package com.test4;

import java.util.Calendar;

public class Paixu {
            public static void main(String[] args) {
                int len=200000;
                int[] arr1=new int[len] ;
                //如何构建无序数列还是100000的
                for(int i=0;i<len;i++) {
                    //让程序随机产生一个1-100000的数
                    //Math.radom()会产生一个0-1;
                    int t=(int)( Math.random()*10000);//Math里面有个random函数
                    arr1[i]=t;
                }
                
                
                //int arr[]= {1,6,0,-1,9,-100};
                //创建一个对象
//                Bubble bubble=new Bubble();
//                bubble.sort(arr);
                
//                int a=12;
//                bubble.test(a);
//                System.out.println("a="+a);//输出的结果肯定是12
                //创建一个Select类
                Select select=new Select();
                //在排序前打印系统时间
                Calendar cal=Calendar.getInstance();
                //排序前打印一个时间
                System.out.println("排序前"+cal.getTime());
                select.sort(arr1);
                //排序后打印一个时间
                cal=Calendar.getInstance();//重新的得到实例(因为getIstence是单态的)
                System.out.println("排序后"+cal.getTime());
                
                
                
                //输出结果
//                for(int i=0;i<arr1.length;i++) {
//                System.out.println(arr1[i]+" ");
//                }
            }
}

class Bubble{
    //测试
    public void test(int a){
        a++;
    }
    
    //排序方法           涉及到引用传递,把数组传递给函数
    public void sort(int arr[]) 
    {
        int temp=0;
        //排序开始
        //外层循环,他决定一共走几趟
        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]) {
                    //换位
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                    
                    
                }
            }
        }
    } 
}
//创建一个选择排序类
class Select{
    //选择排序
    public void sort(int arr[]) {
        //我认为第一个数就是最小的
        int temp=0;
        for(int j=0;j<arr.length-1;j++) {
            int min=arr[j];
            //标记一下最小值
            int minIndex=j;
            //这个for循环是说 我认为从第一个最小数的下一个数在比较
            for(int k=j+1;k<arr.length;k++) {
                if(min>arr[k]) {
                    //做一下修改
                    min=arr[k];
                    minIndex=k;
                    
                }
            }    
            //当退出第二个for循环就找到这次的最小值进行换位 
            temp=arr[j];
            arr[j]=arr[minIndex];
            arr[minIndex]=temp;
            
        }
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值