java简单排序-选择排序

java 简单排序我们先来看一下选择排序:

假设有数字int a[] = {6,3,1,2,3};首先我们选择一个位置为最小元素,期初我们是不知道那个位置的元素是最小的,我们可以先默认选择第一个位置的元素是最小的元素,好了我们设置该位置为min=0;即就是我们的第一个元素的位置,这里指的是位置,切记.那么我们通过这个位置取得的元素的值就是6,然后他和该位置后面的元素进行比较:

第一次:6大于3,我们把最小的元素的位置标记为3的位置,也就是min=1;

第二次:3和1比较,3大于1,我们把最小的元素的位置标记为1的位置就是min=2;

第三次:1和2比较,1小于2,min的位置不变,还是min=2;

第四次:1和3比较,1小于3,还是位置不变,还是min=2;

好了,比较完毕

第五步:把min=2代表的位置的元素1和我们初始min位置0代表的元素6进行赋值变换就可以了,这个是第一次循环我们最后 得带的数字是:

int a[]={1,3,6,2,3}

第二次循环我们是min默认开始的位置是1,根据我们的上面的推理这一次循环完毕交换元素之前我们的min定位是min=3,那么我们把min=3代表的元素2,和min的初识值min=1,元素3互换,

int a[] ={1,2,6,3,3}

第三次循环:min初识位置min=2,代表元素是6,循环执行完毕,没有互换元素之前,min定位是min=3,代表元素第一个3,互换之后

int a[]={1,2,3,6,3}

第四次循环:初识位置min=3,代表元素是6,循环结束min 定位min=4,代表元素是3,与出世位置的元素交换

int a[]={1,2,3,3,6}

到此我们的排序结束,我们来看一下代码:是不是 和我们推理的一样:

/**
 * Created by luyangli on 16-7-3.
 */
public class SelectSort {
    public static void main(String[] args) {
        //        int a[] = {1,2,3,4,5,6,3,1,2,3};
        int a[] = { 6, 3, 1, 2, 3 };
        System.out.println("初始数组是:" + Arrays.toString(a));
        for (int i = 0; i < a.length - 1; i++) {
            int min = i;
            System.out.println("" + (1 + i) + "次循环min的初始位置是:" + i);
            for (int j = i + 1; j < a.length; j++) {
                if (a[min] > a[j] && a[min] != a[j]) {
                    min = j;
                }
            }
            System.out.println("" + (1 + i) + "次循环结束还没有互换元素min的最终位置是:" + min);
            int temp = a[i];
            a[i] = a[min];
            a[min] = temp;
            System.out.println("" + (1 + i) + "次循环结束数组是:" + Arrays.toString(a));
        }
        System.out.println("循环结束数组是:" + Arrays.toString(a));
    }
}
我们来执行一下看看与我们推理的是否一致:
初始数组是:[6, 3, 1, 2, 3]
第1次循环min的初始位置是:0
第1次循环结束还没有互换元素min的最终位置是:2
第1次循环结束数组是:[1, 3, 6, 2, 3]
第2次循环min的初始位置是:1
第2次循环结束还没有互换元素min的最终位置是:3
第2次循环结束数组是:[1, 2, 6, 3, 3]
第3次循环min的初始位置是:2
第3次循环结束还没有互换元素min的最终位置是:3
第3次循环结束数组是:[1, 2, 3, 6, 3]
第4次循环min的初始位置是:3
第4次循环结束还没有互换元素min的最终位置是:4
第4次循环结束数组是:[1, 2, 3, 3, 6]
循环结束数组是:[1, 2, 3, 3, 6]

看来结果就是我们推理这个样子,这就是我们的选择排序,他是定位,位置,位置,位置,每一次都是选择最小元素的位置进行排序的.











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值