Vickate_插入排序

冒泡排序

插入排序也是一个简单的排序算法,它的思想是,每次只处理一个元素,从后往前查找,找到该元素合适的插入位置,最好的情况下,即正序有序(从小到大),这样只需要比较n次,不需要移动。因此时间复杂度为O(n) ,最坏的情况下,即逆序有序,这样每一个元素就需要比较n次,共有n个元素,因此实际复杂度为O(n²) 。

    int k = 0;
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@1, @3, @2, @9, @6, @19, @7]];
    for (int i = 0; i < array.count; i++) {
        k++;
        for (int j = i; j > 0; j--) {
            if (array[j-1] > array[j]) {
                int temp = [array[j] intValue];
                array[j] = array[j - 1];
                array[j - 1] = [NSNumber numberWithInteger:temp];
            }
            
        }
        NSLog(@"k = %d", k);
        NSLog(@"%@\n", array);
    }

看打印的日志

2018-05-18 14:02:22.781995+0800 OCProjectKit[55227:7278235] k = 7
2018-05-18 14:02:22.782169+0800 OCProjectKit[55227:7278235] (
    1,
    2,
    3,
    6,
    7,
    9,
    19
)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容