首页 > 代码库 > 关于数组的算法题
关于数组的算法题
数字在排序数组中出现的次数
function GetNumberOfK(data, k) { if(data.indexOf(k) == -1) return 0; var count = data.lastIndexOf(k)-data.indexOf(k); return count+1; }
数组中只出现一次的数字
数组中出现次数超过一半的数字
连续子数组的最大和
从1-n中1出现的次数
二维数组中的查找
function Find(target, array) { // write code here var i=0; var j=array[0].length-1; while(j>=0 && i<array.length ) if(target<array[i][j]){ j--; }else if(target>array[i][j]){ i++ }else{ return true; }
数组去重
排序算法总结
如何评价算法的优劣
- 时间复杂度:一个算法执行所耗费的时间。
- 空间复杂度: 运行完一个程序所需内存的大小。
- 稳定性:排序后两个相等的值的位置和排序之前的位置是否相同,如果相同就是稳定(不稳定的算法:快、选、堆、希)
- 内/外排序:排毒操作是否需要额外空间
1.冒泡排序
基本原理:重复的走访要排序的数组,每次比较两个值,如果前者大于后者则交换两者的位置。这样最大的元素会慢慢浮到数组的末端
外层控制未排序数组的次数
内层控制未排序数组内两栏比较的次数
function bubbleSort(arr){ var len=arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len-1-i; j++) { if (arr[j]>arr[j+1]) { var temp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=temp; } } } return arr; }
2.选择排序
基本原理:每次找出数组中最小元素的位置,然后和未排序数组的第一个值进行交换
function selectSort(arr){ var len=arr.length, minIndex; for (var i = 0; i < len-1; i++) { minIndex=i; for (var j = i+1; j <len; j++) { if (arr[j]<arr[minIndex]) { minIndex=j; } } var temp=arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=temp; } return arr; }
数组中重复的数字
构建乘机数组
关于数组的算法题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。