数据结构与算法Java实现-10冒泡排序

冒泡排序

package aStudy.day6;

import org.junit.Test;

import java.text.BreakIterator;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.concurrent.BrokenBarrierException;

/**
 * @author haoqi
 * @Date 2020/10/3 - 13:23
 *
 * 冒泡排序
 */
public class data01 {
    public static void main(String[] args) {
        int[] arr = {3,-1,9,-2,20};
        int temp = 0;

        System.out.println("原始序列:");
        System.out.println(Arrays.toString(arr));
        //1排序
        for (int j = 0; j < arr.length - 1 - 0; j++) {
            if (arr[j] > arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }

        System.out.println("第1次排序后:");
        System.out.println(Arrays.toString(arr));

        //2第二趟排序,就是将第二大的数排在倒数第二位
        for (int j = 0; j < arr.length - 1 - 1; j++) {
            if (arr[j] > arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }

        System.out.println("第2次排序后:");
        System.out.println(Arrays.toString(arr));

        //3第三趟排序,就是将第三大的数排在倒数第三位
        for (int j = 0; j < arr.length - 1 - 2; j++) {
            if (arr[j] > arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }

        System.out.println("第3次排序后:");
        System.out.println(Arrays.toString(arr));

        //以此类推
        //4 == 3
        for (int j = 0; j < arr.length - 1 - 3; j++) {
            if (arr[j] > arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }

        System.out.println("第4次排序后:与第三次一样则排序完毕");
        System.out.println(Arrays.toString(arr));
    }
    //封装冒泡排序
    @Test
    public void test(){
        int[] arr = {3,-1,9,-2,20};
        int temp = 0;
//        boolean flag = false;  //标识变量,表示是否交换过

        //由上面的关系知道,只需要在加一次for循环即可
        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+1];
                     arr[j+1] = arr[j];
                     arr[j] = temp;
                }
        System.out.println("封装后的冒泡排序:");
        System.out.println(Arrays.toString(arr));
    }

    //测试冒泡排序效率
    @Test
    public void test1(){
        //创建随机数组80000个
        int[] arr = new int[80000];
        for (int i = 0; i < 80000; i++)
            arr[i] = (int) (Math.random()*80000); //生成[0,80000);区间

//        System.out.println(Arrays.toString(arr)); //不要输出

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date1 = new Date();
        String date1Str = format.format(date1);
        System.out.println("the first time = "+date1Str);

        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+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
        Date date2 = new Date();
        String date2Str = format.format(date2);
        System.out.println("the first time = "+date2Str);

        //the first time = 2020-10-03 15:09:45
	   //the first time = 2020-10-03 15:09:54
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值