Posted in Javascript onApril 21, 2021
基础排序
今天学习了数据结构,遇到了一个关于算法的面试题,然后从中想到了冒泡排序和选择排序对一个数组从小到大的排序的方法,今天分享给大家,顺便记录下我的学习经历吧。
冒泡排序
要求:对数组[6,3,8,2,9,1]进行从小到大的排序
想法:相邻的两个位置进行对比,如果大的那个换到右边,小的那个换到左边。上代码!
var arr = [6,3,8,2,9,1];
var len = arr.length;
for(var i=0;i<arr.length;i++){
//len-1-i的意思是数组最后那个的长度
for(var j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];//因为arr[j]会被赋值,所有要先保存一下
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
选择排序
要求:对数组[49,27,65,97,76,12,38]进行从小到大的排序
想法:创建一个指针先指向第一位置,然后另一个指针扫后面所有的,找到最小的,跟第一个指针互换位置
var arr = [49,27,65,97,76,12,38];
var len = arr.length;
var pont = null;//设定一个指针
for(var i=0;i<arr.length;i++){
pont = i;//指针先指向第一个位置
for(var j=i+1;j<arr.length;j++){
if(arr[point] > arr[j]){
pont = j;
}
}
var temp = arr[i];
arr[i] = arr[point];
arr[point] = temp;
}
面试题
要求:把数组[{‘brand’:‘可乐’,‘price’:3,‘year’:2021},{‘brand’:‘薯片’,‘price’:7,‘year’:2020},{‘brand’:‘朗姆酒’,‘price’:200,‘year’:1999},{‘brand’:‘薯条’,‘price’:7,‘year’:2021},{‘brand’:‘营养快线’,‘price’:5,‘year’:2021}] 安装价格从小到大排序,如果价格一样,价格按从大到小排序。
想法:用刚才的选择排序来实现
var arr = [{'brand':'可乐','price':3,'year':2021},{'brand':'薯片','price':7,'year':2020},{'brand':'朗姆酒','price':200,'year':1999},{'brand':‘薯条’,'price':7,'year':2021},{'brand':‘营养快线’,'price':5,'year':2021}];
var len = arr.length;
var point = null;
for(var i=0; i<arr.length;i++){
point = i;
for(var j=i+1;j<arr.lenth;j++){
if(arr[pont]['price'] > arr[j]['price']){
point = j;
}else if(arr[point]['price'] > arr[j]['price'] && arr[point]['year'] < arr[j]['year']){
point = j;
}
}
var temp = arr[i];
arr[i] = arr[point];
arr[point] = temp;
}
这样就实现了,题目要求的排序了。如果有喜欢前端的伙伴,可以关注我一下,我会每周不定期,分享前端的小知识点,一起学习进步。
一道JS算法面试题——冒泡、选择排序
- Author -
Famigilstimo声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@