美文网首页ios技能包
iOS 算法常用总结

iOS 算法常用总结

作者: 烟雨任平生YL | 来源:发表于2019-06-18 15:44 被阅读0次

    一、冒泡排序

    冒泡算法的工作原理:
    1.假设对于一个含有n个元素的组进行升序排列,原则上要进行n-1趟遍历;
    2.每一趟遍历,从第一个数开始,将此与其相邻的数进行比较,如果前者大于后者,就交换这两个数的位置。在一趟遍历中,这样的对比将进行(数组元素个数 - 当前趟数)次。一趟比较过后,最大的数将会被排到数组最末端;
    3.对数组除去最后一个元素的n-1个元素重复上面操作,将倒数第二大的数排列在n-1的位置;
    4.以此类推,直到排列完成。

    swift版本示例:

     //随机产生一组20个元素的数组取值范围为[20, 40]
    var numbersArr = [Int]();
    print("随机产生的一个包含40个元素的数组:,单前为空\(numbersArr)")
    
    for _ in 0 ..< 20 {
        //print(i)
        numbersArr.append(Int(arc4random()%41) + 20)
        ////arc4random产生随机数,通过arc4random() 获取0到x-1之间的整数的代码如下:int value = arc4random() % x;
    }
    print(numbersArr)
    //冒泡具体操作
    for i in 1 ..< numbersArr.count {   ////n个元素比较n-1趟
        for j in 0 ..<  numbersArr.count-i {   ////每趟比较次数 = 数组元素个数 - 当前趟数
            if numbersArr[j] > numbersArr[j + 1] {
    //            var temp = numbersArr[j]
    //            numbersArr[j] = numbersArr[j + 1]
    //            numbersArr[ j + 1] = temp
                numbersArr.swapAt(j, j+1)  //swapAt(a,b) isequalTo swap(&a,&b)
            }
        }
    }
    print(numbersArr)
    

    二、选择排序

    选择排序的工作原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

    算法操作流程:
    1.设数组内存放了n个待排数字,数组下标从0开始,到n-1结束;
    2.先假设a[i](i=0)为最小,从数组的第a[i+1]个元素开始到第n个元素,逐一比较,若遇到比之小的则交换;
    3.以此类推对i=i+1,i=i+2, i= i+3 ...... i=n-1做如上比较操作。

    OC版本示例:

    NSMutableArray * ascendingArr = [NSMutableArray arrayWithObjects:@"32",@"432",@"23",@"54",@"67",@"3",@"767", nil];
    for (int i = 0; i < ascendingArr.count; i ++) {
            int min = i;
            for (int j = i + 1; j < ascendingArr.count; j ++) {   
                if ([ascendingArr[i] integerValue] > [ascendingArr[j] integerValue]) {
                     min = j
                }
          }
          if(min != i){
                   // int temp = [ascendingArr[i] intValue];
                    //ascendingArr[i] = ascendingArr[j];
                    //ascendingArr[j] = [NSNumber numberWithInt:temp];
                   [ascendingArr exchangeObjectAtIndex:i withObjectAtIndex:j];   
           }
    }
    NSLog(@"%@",ascendingArr);
    

    三、快速排序


    四、归并排序


    五、二分查找算法


    六、链表翻转(链表逆序)


    七、冒泡排序


    八、冒泡排序


    九、冒泡排序


    十、冒泡排序

    相关文章

      网友评论

        本文标题:iOS 算法常用总结

        本文链接:https://www.haomeiwen.com/subject/tsvfqctx.html