鱼C论坛

 找回密码
 立即注册
查看: 2688|回复: 0

[学习笔记] 冒泡排序与选择排序

[复制链接]
发表于 2019-8-31 12:02:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
package com.itheima_04;

public class Test5 {
    public static void main(String[] args) {
        int[] arr = {1,3,4,2,0,9,89,1};
        //调用方法排序
        //sort(arr);
        print_mo(arr);
        print_array(arr);
    }
    /*
    * 选择排序:
    *     i      j
    * arr[0] arr[1]
    * arr[0] arr[2]
    * arr[0] arr[3]
    * arr[1] arr[2]
    * arr[1] arr[3]
    * arr[2] arr[3]
    * i是外层循环长度是length-1
    * j是内层循环,长度是length,i的关系是i+1+j
    * 其中,j因该是从i+1开始,然后j++
    * 当判断到arr[i]>arr[j],arr[i]arr[j]交换位置
    * */
    public static void sort(int[] arr){
        for (int i = 0;i<arr.length-1;i++){
            for (int j = i+1;j <arr.length;j++){
                if (arr[i]>arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
    public static void print_array(int[] arr){
        System.out.print("[");
        for (int i = 0;i < arr.length;i++){
            if (i==arr.length-1){
                System.out.println(arr[i]+"]");
            }else{
                System.out.print(arr[i]+",");
            }
        }
    }
    /*
    * 冒泡排序:
    *     j     j+1
    * 第一次
    * arr[0] arr[1]
    * arr[1] arr[2]
    * arr[2] arr[3]
    * 第二次
    * arr[0] arr[1]
    * arr[1] arr[2]
    * 第三次
    * arr[0] arr[1]
    *
    * for(int i = 0; i< arr.length-1;i++){
    *   for(int j = 0;j <arr.length-i-1;j++){
    *       if(arr[j]>arr[j+1]){
    *           int temp = arr[j];
    *           arr[j] = arr[j+1];
    *           arr[j+1] = temp;
    * }}}
    * 其中i控制比较的次数,j控制索引
    * arr.length-i-1, debug一下:
    * 4-0-1 =3;内层循环3,j的值分别是0,1,2
    * 4-1-1 =2;内层循环2,j的值分别是0,1
    * 4-2-1 =1;内层循环1,j的值分别是0
    * :-1是为了Index异常
    * */
    public static void print_mo(int[] arr){
        for (int i = 0;i < arr.length-1;i++){
            for (int j = 0;j < arr.length-i-1;j++){
                if (arr[j]>arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 15:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表