排序

选择排序、冒泡排序、插入排序的排序

选择排序

public static void main(String[] args) {
        int[] num = new int[]{10,50,30,28,6,2,56};//原数组
            for(int j=0;j<num.length-1;j++){   //外部循环每进行一次得到个最小值
               int min=j;   //用于定位每一次的最小值及位置
              for(int i=j+1;i<num.length;i++ ){   //内部,一组中比较最小
                if(num[min]>num[i]){
                    min=i;
                    }
            } 
                System.out.print(num[j]+" ");//输出每一次比较时输出的最小值
                if(min!=j){   //如果定位的最小值不是它现在的位置,即将现在位置及
                    int tmp=num[j];    //应该在的位置交换
                    num[j]=num[min];
                    num[min]=tmp;
                }

        }
            System.out.println();
            for(int a:num)
            System.out.print(" "+a);
    }

原理:每一趟从待排序的记录中选出最小的元素,和他在排好序中的位置进行交换。

冒泡排序

原理:比较两个相邻的值,将值大的元素交换至右端。每一次选出值大的
内部循环中:比较的次数逐渐减少。
冒泡过程

for(int j=0;j<num.length-1;j++){
            for(int i=0;i<num.length-j;i++ ){
                if(num[i]>num[i+1]){
                    int tmp;
                    tmp=num[i];
                    num[i]=num[i-1];
                    num[i-1]=tmp;
                }
            }   
        }
            for(int a:num)
            System.out.print(" "+a);

插入排序

原理:将元素前两个为一组,每一次将后面的元素加入前面元素中适当的位置。
内部循环中:比较的次数逐渐增多。
插入过程

for(int j=1;j<num.length;j++){


            for(int i=j;i>0;i--){
                if(num[i-1]>num[i]){
                    int tmp;
                    tmp=num[i];
                    num[i]=num[i-1];
                    num[i-1]=tmp;
                }
            }   
        }
            for(int a:num)
            System.out.print(" "+a);

总结

外部循环思想一致,都是循环array.length-1次!主要区别在于内部循环!
内部循环主要包括:
1、循环时条件判断语句:
1)比较次数递增—>以外部循环为准,小于等于外部循环的次数,外部循环1次,比较1次,外部循环n次比较n次;
2)比价次数递减—>array.length-1减去外部循环次数。
2、内部循环中需要获得什么:
1)冒泡排序:两两交换位置,将大值放在右边;
2)插入排序:将后面的元素插入前面的元素中适当的位置;
3)选择排序:选择未排好序中最小的,将其放置外部循环次数对应的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值