美文网首页
冒泡排序算法,选择排序算法,快速排序算法的OC实现

冒泡排序算法,选择排序算法,快速排序算法的OC实现

作者: 浪漫恋星空 | 来源:发表于2017-03-09 16:57 被阅读86次

1.冒泡排序算法

/**
 冒泡排序算法

 @param mutableArray 需要排序的数组
 */
- (void)bubbleSortArray:(NSMutableArray *)mutableArray {

    for (int i = 0; i < mutableArray.count; i ++) {
        
        for (int j = 0; j < mutableArray.count - 1; j ++) {
            
            if (mutableArray[j] > mutableArray[j + 1]) {
                
                [mutableArray exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
            }
        }
    }
}```

### 2.选择排序算法
```OC
/**
 选择排序算法

 @param mutableArray 需要排序的数组
 */
- (void)selectionSortArray:(NSMutableArray *)mutableArray {
    
    for (int i = 0; i < mutableArray.count; i ++) {
        
        for (int j = i + 1; j < mutableArray.count; j ++) {
            
            if (mutableArray[i] > mutableArray[j]) {
                
                [mutableArray exchangeObjectAtIndex:i withObjectAtIndex:j];
            }
        }
    }
}```
#### 3.快速排序算法
```OC
/**
 快速排序算法

 @param array 需要排序的数组
 @param leftIndex 左边的下标
 @param rightIndex 右边的下标
 */
- (void)quickSortArray:(NSMutableArray *)array
             leftIndex:(NSInteger)leftIndex
            rightIndex:(NSInteger)rightIndex {
    
    if (leftIndex >= rightIndex) {
        
        return ;
    }
    
    NSInteger i = leftIndex;
    NSInteger j = rightIndex;
    
    // 记录基准数
    NSInteger key = [array[i] integerValue];
    
    while (i < j) {
        
        // 首先从右边j开始查找比基准数小的值
        while (i < j && [array[j] integerValue] >= key) {
            
            j --;
        }
        // 如果比基准数小,则将查找到的小值调换到i的位置
        array[i] = array[j];
        
        // 当在右边查找到一个比基准数小的值时,就从i开始往后找比基准数大的值
        while (i < j && [array[i] integerValue] <= key) {
            i++;
        }
        // 如果比基准数大,则将查找到的大值调换到j的位置
        array[j] = array[i];
    }
    
    // 将基准数放到正确位置
    array[i] = @(key);
    
    // 递归排序
    
    [self quickSortArray:array leftIndex:leftIndex rightIndex:i - 1];
    
    [self quickSortArray:array leftIndex:i + 1 rightIndex:rightIndex];
}```

相关文章

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • iOS排序方法集合

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

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 算法:冒泡排序

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

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • OC 中实现常用的算法

    #在OC中实现常用的算法(冒泡,选择,快速,插入) ## 1.冒泡排序 - (void)viewDidLoad {...

  • IOS常见算法

    常见算法: 快速排序: 选择排序: 冒泡排序: 测试代码:

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

网友评论

      本文标题:冒泡排序算法,选择排序算法,快速排序算法的OC实现

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