JavaScript排序算法之--选择排序

选择排序用的是假设性原则
假定一个数字是最小值
验证这个数字是不是最小值,如果不是,换位

假设第一个数字是最小的

var min = arr[0];
var index = 0

和数组之中的其余项进行比较,查看是不是最小值

for(var i = 1 ; i < arr.length ; i ++){
	//如果有比假定数字还小的数字
	if( arr[i] < min ){
		//记录数字以及下标,暂时不换位
		min = arr[i];
		index = i;
	}
}

换位操作:
假定最小值是0,实际上的最小值是index,换位
1.先覆盖原有的项

arr[index] = arr[0];

2.把最小值换到第0位上

arr[0] = min;

第二趟

var min = arr[1];
var index = 1;

和数组之中的其余项进行比较,查看是不是最小值

for(var i = 1 ; i < arr.length ; i ++){
//如果有比假定数字还小的数字
	if( arr[i] < min ){
		//记录数字以及下标,暂时不换位
		min = arr[i];
		index = i;
	}
}

换位操作:
假定最小值是0,实际上的最小值是index,换位
1.先覆盖原有的项

arr[index] = arr[1];

2.把最小值换到第0位上

arr[1] = min;

结论:

var arr = [1,9,8,5,4,2,10]
        for( var k = 0 ; k < arr.length ; k ++){
            // 假定最小值下标
            var min = arr[k];
            var index = k;
            // 求证最小值
            for( var i = k + 1 ; i < arr.length ; i ++){
                if(arr[i] < min){
                    min = arr[i];
                    index = i
                }
            }
            //最小值和假定最小值换位
            arr[index] = arr[k];
            arr[k] = min;
        }
        console.log(arr);

运行结果:

[1, 2, 4, 5, 8, 9, 10]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值