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);
    }
  • 相关阅读:
    HDU 2141.Can you find it?-二分
    POJ 3258.River Hopscotch-二分
    HDU 1213.How Many Tables-并查集
    HDU 1232.畅通工程-并查集
    hdu 5701 中位数计数 思路题
    codeforces 354 div2 C Vasya and String 前缀和
    codeforces 11 B.Jumping Jack 想法题
    hdu 2204 Eddy's爱好 容斥原理
    xtu 1242 Yada Number 容斥原理
    codeforces 300 div2 B.Pasha and Phone 容斥原理
  • 原文地址:https://www.cnblogs.com/sunyanyan/p/5237870.html
Copyright © 2011-2022 走看看