java数据结构之基础排序算法

    数据结构的三大基础排序算法:冒泡排序简单选择排序直接插入排序。下面我来解释:(一律是顺序排序)

首先是冒泡排序:他的排序主旨是把大的数依次排到最后,像冒泡一样,下面是代码:

public static void mp(int arr[]){
        int count;                                           //定义一个中间值,用来替换
        boolean flag = true;                                 //定义一个标记变量,用来检验是否已经有序
        for (int i = 0; i < arr.length && flag; i++) {       //进入外层循环 
            flag = false;                                    //把标记变成假
            for (int j = 1; j < arr.length-i; j++) {         //进入内层循环
                if(arr[j]<arr[j-1]){                         //两个数比较,如果前面的大于于后面的,则进行交换(顺序排序)
                    count = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = count;
                    flag = true;                             //如果进行了交换,则意味着还没排好序
                }
            }
            System.out.println(i+":"+Arrays.toString(arr));
        }
    }

第二是简单选择排序:他的排序主旨是每次选择一个最小的,根据角标放到前面

public static void xz(int arr[]){
        int count;                                     //定义一个中间变量用来跟最小的换值
        int min;                                       //最小值得角标
        for (int i = 0; i < arr.length; i++) {
            min = i;                                     
            for (int j = i+1; j < arr.length; j++) {
                if(arr[min] > arr[j]){                 //如果这个值不是最小的,那么交换角标,保证最小
                    min = j;
                }
            }
            if(min != i){                              //最小值与前方的值互换,顺序排序
                count = arr[i];
                arr[i] = arr[min];
                arr[min] = count;
            }
            System.out.println(i+":"+Arrays.toString(arr));
        }
    }

第三种是直接插入排序:他的排序主旨是把一个值插入到前面比他小的值得后边

public static void cr(int arr[]) {
        int i,j;
        for (i = 1; i < arr.length; i++) {
            int temp = arr[i];                                //定义一个存储角标为i的值,为将插入对象
            for (j = i - 1; j >= 0 && temp < arr[j]; j--) {   //判断是否为需要将其插入到前面,直到比他小
                arr[j + 1] = arr[j];                          //值向后移动,为将插入值腾出空位,即arr[j]
            }
            arr[j+1] = temp;                                  //插入到合适位置
            System.out.println(i+":"+Arrays.toString(arr));
        }
    }
     这三种简单的排序算法适用于,你待排序序列总是基本有序的。而其中当记录关键字本身信息量很大(比如:关键字是数十位的数字),那么简单选择排序就非常有优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值