美文网首页
OC各种算法,排序,查找实现

OC各种算法,排序,查找实现

作者: 萧城x | 来源:发表于2018-05-03 20:58 被阅读53次

二维数组查找数字的OC实现

-(void)findNumWithNum:(NSArray<NSArray *>)num rows:(int)rows columns:(int)columns number:(int)number
{
    BOOL reuslt = false;
    int row = 0;
    int column = columns-1;
    if (rows&&columns) {
        //右上角
        while (row<rows&&columns>=0) {
            if (num[row][column]==number) {
                reuslt = true;
                break;
            }else if(num[row][column]>number){
                //del col
                column--;
            }else{
                row++;
            }
        }
    }
}

OC 二分查找的实现

- (void)viewDidLoad {
    [super viewDidLoad];
    
   NSArray * array1 = @[@1,@2,@3,@4,@5,@6,@7,@9];
    
    int result = [self compare:array1 target:@9];
    //在这里打印结果看是否有相等的值
    NSLog(@"%d",result);
}

- (int)compare:(NSArray *)array target:(int)target{
    
    if (!array.count) {
        return -1;
    }
    
   unsigned int low = 0;
   unsigned int high = array.count - 1;
    
    while (low <= high) {
        //会有一些朋友看到有些人是( low + high ) / 2这样写的,但是这样写有一点不好,就是low+high会出现整数溢出的情况,如果存在溢出,你再除以2也是没有用的,所以不能这么写
        int mid = low + ((high - low)/2);
        
        //第mid项的内容
        int num = [array objectAtIndex:mid];
        
        if (target == num) {
            return low;
        }else if (num > target){
            high = mid - 1;//左边进行查找
        }else{
            low = mid +1;//右边进行查找
        }
    }
    return -1;//返回-1是没找到
}

快速排序

-(void)quickSort:(CFArrayRef*)arr L:(int)L R:(int)R{
    int i = L;
    int j = R;
    
    
    int mid = arr[(L+R)/2];
    while (i<=j) {
        while (mid>arr[i]) {
            i++;
        }
        while (mid<=arr[j]) {
            j--;
        }
        if (i<=j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }
    
    if (L<j) {
        [self quickSort:arr L:L R:j];
    }
    if (i<R) {
        [self quickSort:arr L:i R:R];
    }
}

相关文章

  • OC各种算法,排序,查找实现

    二维数组查找数字的OC实现 OC 二分查找的实现 快速排序

  • 各种排序算法的OC实现

    1、插入排序--直接插入排序 要求在一个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这中方法叫...

  • 排序中的数据结构

    排序是为了能够提高其他算法的效率,比如查找算法。 准确的说来,排序应该属于算法一类的,但是他的实现却是基于各种数据...

  • 算法:冒泡排序

    本文内容:1、什么是冒泡排序?2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? 1、什么是冒泡排序?...

  • 算法之二分查找

    排序算法 二分查找 用于有序元素列表的查找性能: Python实现: C#实现

  • iOS排序方法集合

    OC_选择排序 OC_冒泡排序 参考原文:排序算法

  • 算法

    基本排序和查找算法? 如何用栈实现队列? TimSort原理?

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 排序查找c++

    排序算法 选择排序 顺序查找 二分查找

  • 其难杂症

    排序 冒泡排序,快速排序 查找算法 二分查找算法 Array方法 push/unshift,pop/shift,m...

网友评论

      本文标题:OC各种算法,排序,查找实现

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