Java入门 冒泡排序(第十二天)

冒泡排序:

冒泡排序(升序)口诀:
N 个数字来排队
两两相比小靠前
外层循环 N-1      (数组名.length-1)
内层循环 N-1-I    (数组名.length-1-i)

冒泡升序:

		// 冒泡排序:升序
		int[] nums = {11,56,94,78,33};
		//排序前输出数组
		System.out.println("排序前的数组:");
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i]+" ");
		}
		System.out.println();
		
		//外层循环控制行数(外控循环控制比较的轮数)
		for(int i =0;i<nums.length-1;i++){
			//内层循环控制列数(内层循环控制每一轮的比较次数)
			for(int j =0;j<nums.length-1-i;j++){
				//比较:如果前面的元素比后面的元素大,交换位置
				if(nums[j]>nums[j+1]){
					int temp = nums[j];
					nums[j]=nums[j+1];
					nums[j+1]=temp;
				}
			}
		}
		
		System.out.println("排序后的数组:");
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i]+" ");
		}

冒泡降序:

//冒泡排序:降序(从大到小)
		int[] num = {11,56,94,78,33};
		//降序前
		System.out.println("降序前:");
		for (int i = 0; i < num.length; i++) {
			System.out.print(num[i]+" ");
		}
		System.out.println();
		for (int i = 0; i < num.length-1; i++) {  //比较的轮次
			for (int j = 0; j < num.length-1-i; j++) { //每一轮比较的次数
				if(num[j]<num[j+1]){   //表示下标为0和下标为1的数据继续比较
					int temp=num[j];   //下标为0的数据临时赋值给temp
					num[j]=num[j+1];   //num[j+1](下标1)比num[j](下标0)的值大,就赋值给num[j]
					num[j+1]=temp;     //临时变量里的值在赋给num[j+1]
				}
			}
		}
		System.out.print("降序后:");
		for (int i = 0; i < num.length; i++) {
			System.out.print(num[i]+" ");
		}

 插入元素:


         /* 有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。
         * 要增加一个学员的成绩,将它插入成绩序列,并保持降序
         *
         * 思路: 
         * 1)新建一个比原来数组长度大1的数组 
         * 2)将原来数组里的元素按照顺序存储到新的数组中
         * 3)使用Scanner获取你要增加的学员成绩
         * 4)通过循环比较,获取插入元素要插入的位置(下标)
         * 5)从插入位置开始及之后的元素依次往后移动一位(注意:移动的时候,从后向前移动)
         * 6)移动元素之后,插入位置就空出来了,将插入元素存储到插入位置
         * /
         
        int[] scores = { 99, 85, 82, 63, 60 };
        int[] newScores=new int[scores.length+1];//新数组
        //将旧数组的值放入新建数组里
        for(int i=0;i<scores.length;i++){
            newScores[i]=scores[i];
        }
        
        //创建Scanner类对象,获取输入的成绩
        Scanner sc=new Scanner(System.in);
        System.out.println("输入增加的学员成绩:");
        int insert =sc.nextInt();
        
        //
        int index=newScores.length-1;
        for(int i=0;i<newScores.length;i++){
            if(insert>newScores[i]){
                index=i;
                break;
            }
        }
        for(int i=newScores.length-1;i>index;i--){
            newScores[i]=newScores[i-1];
        }
        newScores[index]=insert;
        //插入数组并遍历数组
        System.out.println("插入元素后:");
        for (int i = 0; i < newScores.length; i++) {
            System.out.print(newScores[i]+" ");
        }

//统计每次消费金额,及总消费金额
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入会员本月的消费记录:");
		
		double[] prices=new double[5];
		
		double sum=0;
		for (int i = 0; i < prices.length; i++) {
			System.out.println("第"+(i+1)+"笔消费");
			prices[i]=sc.nextDouble();
			sum+=prices[i];
		}
		System.out.println("序号\t\t金额(元)");
		for (int i = 0; i < prices.length; i++) {
			System.out.println((i+1)+"\t\t"+prices[i]);
		}
		System.out.println("总金额:"+"\t\t"+sum);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值