码迷,mamicode.com
首页 > 编程语言 > 详细

关于数组的算法题

时间:2017-07-04 22:25:19      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:++   else   span   基本   select   最大和   count   相同   排序   

数字在排序数组中出现的次数

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. 时间复杂度:一个算法执行所耗费的时间。
  2. 空间复杂度: 运行完一个程序所需内存的大小。
  3. 稳定性:排序后两个相等的值的位置和排序之前的位置是否相同,如果相同就是稳定(不稳定的算法:快、选、堆、希)
  4. 内/外排序:排毒操作是否需要额外空间

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;
}

 

数组中重复的数字

构建乘机数组

 

关于数组的算法题

标签:++   else   span   基本   select   最大和   count   相同   排序   

原文地址:http://www.cnblogs.com/t1amo/p/7118778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!