• 常用排序(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);
    }
  • 相关阅读:
    蓝桥杯_基础_杨辉三角
    蓝桥杯_基础_数组特征
    蓝桥杯_基础_美丽的图形
    脉象
    词根汇总
    蓝桥杯 入门训练 Fibonacci数列 解析
    制作tomcat重启.bat文件
    day23(023-递归练习)
    day27(027-反射&JDK新特性)
    day25(025-多线程(下)&GUI)
  • 原文地址:https://www.cnblogs.com/sunyanyan/p/5237870.html
Copyright © 2020-2023  润新知