《一句话算法之选择排序》

前言

    《一句话算法系列》是将常用排序算法一句话来概括,并且通过反复揣摩这句话,达到真正理论和实际编码高度契合。一个字就代表很多代码,就像玄幻小说里面的言出法随的境界。也就是说,你再也不用记代码了,只要记住一句话,脑海中随即可以快速编码,达到真正理解的目的。

选择排序法

    每次从剩下的数据中找最小的数值放在前面。

找,这个字眼,看到‘找’脑海就要里面想到for循环和swap数据比较。既然牵涉到比较,那么就要至少两层for循环,一层for循环取出A,另外一层for循环取出B,A和B比较。最小的数值放在前面,那么第一个默认的最小的值是谁呢,从小到大排序,当然是第一个默认最小值,然后和后面的值进行比较。

//交换数据,肯定要传入整个数组,这个前面的下标i ,最小的数值的下标minIndex。有点点编程基础的人都可以写出来。

//这种编程思想也是告诉我们,功能总是能实现的,先慢慢来,实现容易实现的部分,那么复杂的东西,最后也就不复杂了。

//swap 交换

void swap(int[] arr,int i,int minIndex){

//临时变量val接收,此时前面arr[i]使命结束,可以将一轮排序后最小的值放在所谓的前面
int val = arr[i];
arr[i] = arr[minIndex];
//不改变数组的值 那么还要将前面的那个值放回数组,放哪里呢,即放到最小的那个值所在的位置,即达到所谓交换

         arr[minIndex] = val;

}

//sort 排序的意思 照顾英文不好的同学……

void sort(int[] arr){

    int length = arr.length;
for(int i = 0;i < length; i++){
                //先假定第一个是最小的  假设法
int minIndex = i;
//拿第一个和 剩下的数据比找出最小的 依次++
for(int j=i+1;j<length;j++){

    //是大于还是小于呢,因为是找出最小值,从小到大排序, 后面要前面更小才有资格排到前面

                    if(arr[j]<arr[minIndex]){

                        //其实我认为下面这句代码才是整个核心,即不断更换minIndex的值,然后if里面arr[minIndex]又是新的值,有点递归的思想。

                        minIndex=j;

                    }

                }

        假设八个数,第一轮就找出八个数最小的,第二轮就找出剩下的数据中最小的,以此轮推.每轮找出剩下数据最小的  

        System.out.println("当前"+arr[i]+"到"+arr[length]+"区间最小值索引为:"+minIndex+"值为:"+arr[minIndex]);
        //上面只是记录最小值的索引 找出来后和最外层循环的i所占据位置交换位置
swap(arr,i,minIndex);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值