选择排序
假如我们有一组歌的数据,我们需要按照播放量从大往小排序。
最简单的做法就是,先从这组数据里找到最大的那个,然后把它拿出来,放到另一个数组里,接着再在这个数据里找到最大的那个,拿出来,放到另一个数组里,直到全部走完。
看代码。
//查找最大的元素
const findElement = (arr)=>{
let small_index = -1 ;//存储最大的值的索引
if(Array.isArray(arr) && arr.length>0){
let small_value = arr[0]; //存储最大的值
small_index = 0;
for(let i = 1;i<arr.length ; i++){
let value = arr[i];
if(value > small_value){
small_value = value;
small_index = i;
}
}
}
return small_index;
};
//选择排序数组
const sortArray = (array)=>{
let sort_array = [];
if(Array.isArray(array) && array.length > 0){
let length = array.length;
for(let i = 0;i<length;i++){ //这样写是为了遍历到所有元素,因为里面会设计删除数组
let small_index = findElement(array);
let small_value = array.splice(small_index,1)[0]; //删除元素并返回一个数组,所以取值
sort_array.push(small_value)
}
}
return sort_array;
}
const array = sortArray([1,5,8,11,4,3,99,7]);
console.log(array);
//[ 99, 11, 8, 7, 5, 4, 3, 1 ]
可以看到我们的选择排序使用了两个for
循环,时间复杂度O(n*n)
。
网友评论