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]
发布了5 篇原创文章 · 获赞 12 · 访问量 160

猜你喜欢

转载自blog.csdn.net/yu3278326/article/details/104636604
今日推荐