[7]选择排序法,冒泡排序法

前言:主要为个人笔记

package com.lgb;

import java.util.Arrays;public class ArraysTest2 {
    public static void main(String[] args) {
        int[] arr= {2,65,1,77,3,9};
        printArr(arr);
        //arrSelect(arr);     //选择排序法
        //arrMao(arr);       //冒泡排序法
        Arrays.sort(arr);   //开发时,调用Arrays.sort进行排序
        printArr(arr);
    }
    
    /*
     * 冒泡排序法
     * */

   外循环:0-1 1-2 2-3 3-4 4-5 ,如果0比1大那么0与1交换,小的往前一格大的后退一格。以此类推,第一次循环5位最大值

                 0-1 1-2 2-3 3-4  ,因为最大值选出来了,接下来不需要算上5,所以外循环arr.length-1

                 0-1 1-2 2-3  ,以此类推

   内循环:如果为y=5,就会与6比较,所以-1,最大为4比5。发现随着外循环x的自增,排序次数自减,所以减去x
    public static void arrMao(int[] arr) {
        for (int x = 0; x < arr.length-1; x++) {  
            for(int y=0;y<arr.length-1-x;y++) {
                if (arr[y]>arr[y+1]) {
                    int temp=arr[y];
                    arr[y]=arr[y+1];
                    arr[y+1]=temp;
                }
            }
        }
    }
    
    /*
     * 选择排序法
     * */

   外循环: 先以角标为0去比较,凡是比角标0小的都与角标0比较,以此选出最小的。接下来以角标1比较,凡是比角标1小的与角标1交换,选出第二小的。以此类推,选完了0 1 2 3 4,从小到大,那么5也就不需要了。所以-1,如果写上也没关系。只不过平白多出了一次运算

  内循环:第一次比较是0与1比,第二次则是0与2比。所以y=x+1,在第一次循环的时候就为1,接下来自增

    public static void arrSelect(int[] arr) {
        for(int x=0;x<arr.length-1;x++) {
            for(int y=x+1;y<arr.length;y++) {
                if (arr[x]>arr[y]) {
                    int temp=arr[x];
                    arr[x]=arr[y];
                    arr[y]=temp;
                }
            }
        }
    }
    
    /*
     * 打印
     * */
    public static void printArr(int[] arr) {
        for(int i=0;i<arr.length;i++) {
            if (i==arr.length-1) {
                System.out.println(arr[i]);
            }else {
                System.out.print(arr[i]+",");
            }
        }
    }
}
本小白刚学java不久,有许多不足,欢迎大佬指出,在下也会不断的努力,修正错误。浇下的时间与心思,终有一天会在不知不觉中开花。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值