zoukankan      html  css  js  c++  java
  • 常用排序(oc实现)

    常用排序(oc实现)


    冒泡排序

    //由小到大 排序
    //NSNumber 中用的int类型
    +(void)BubbleSort:(NSMutableArray<NSNumber*> *)arr
    {
    NSLog(@" 冒泡排序前 :%@  ",arr);
    for (int i = 0; i < arr.count; i++) {
        for (int j = 0; j < arr.count - i - 1;j++) {
            if ([arr[j+1]integerValue] < [arr[j] integerValue]) {
                int temp = [arr[j] integerValue];
                arr[j] = arr[j + 1];
                arr[j + 1] = [NSNumber numberWithInt:temp];
            }
        }
    }
    NSLog(@"冒泡排序后:%@",arr);
    }
    

    快速排序

    //由小到大 排序
    //NSNumber 中用的 long long 类型
    +(void)quickSort:(NSMutableArray<NSNumber*> *)arr leftIndex:(int)left rightIndex:(int)right
    {
    if (left < right) {
        int temp = [self getMiddleIndex:arr leftIndex:left rightIndex:right];
        [self quickSort:arr leftIndex:left rightIndex:temp - 1];
        [self quickSort:arr leftIndex:temp + 1 rightIndex:right];
    }
    }
    
    +(int)getMiddleIndex:(NSMutableArray<NSNumber*> *)arr leftIndex:(int)left rightIndex:(int)right
    {
    long long tempValue = [arr[left] longLongValue];
    while (left < right) {
        while (left < right && tempValue <= [arr[right] longLongValue]) {
            right --;
        }
        if (left < right) {
            arr[left] = arr[right];
        }
        
        while (left < right && [arr[left] longLongValue] <= tempValue) {
            left ++;
        }
        if (left < right) {
            arr[right] = arr[left];
        }
    }
    arr[left] = [NSNumber numberWithLongLong:tempValue];
    return left;
    }
    

    选择排序

    //由小到大 排序
    //NSNumber 中用的 int 类型
    +(void)SelectionSort:(NSMutableArray<NSNumber*> *)arr
    {
    for (int i = 0; i < arr.count; i ++) {
        for (int j = i + 1; j < arr.count; j ++) {
            if ([arr[i] integerValue] > [arr[j] integerValue]) {
                int temp = [arr[i] integerValue];
                arr[i] = arr[j];
                arr[j] = [NSNumber numberWithInt:temp];
            }
        }
    }
    
    NSLog(@"选择排序后:%@",arr);
    }
    

    插入排序

    //由小到大 排序
    //NSNumber 中用的 int 类型
    +(void)InsertSort:(NSMutableArray<NSNumber*> *)arr
    {
    for (int i = 1; i < arr.count; i ++) {
        int temp = [arr[i] integerValue];
        
        for (int j = i - 1; j >= 0 && temp < [arr[j] integerValue]; j --) {
            arr[j + 1] = arr[j];
            arr[j] = [NSNumber numberWithInt:temp];
        }
        
        
    }
    NSLog(@"插入排序后:%@",arr);
    }
  • 相关阅读:
    Cocos2d-x 3.2编译生成Android程序出错Error running command, return code: 2的解决方法
    利用Theme自定义Activity进入退出动画
    Activity的四种launchMode
    android中设置控件获得焦点
    android 反编译 for mac
    android中libs目录下armeabi和armeabi-v7a的区别
    解决Sublime Text 3中文显示乱码(tab中文方块)问题,sublime tab乱码
    mysql教程
    Failed to load c++ bson extension, using pure JS version
    mongodb导出数据
  • 原文地址:https://www.cnblogs.com/sunyanyan/p/5237870.html
Copyright © 2011-2022 走看看