2018-04-27 算法(插入,冒泡,选择)

pragma mark - 插入排序算法 (升序)

  • (void)sortWithArray:(NSArray *)array
    {
    NSMutableArray *mtlarray = [NSMutableArray arrayWithArray:array];
    NSLog(@"排序前数组 = %@", mtlarray);
    for (int i = 1; i < mtlarray.count; i++) {
    int tmp = [mtlarray[i] intValue];
    for (int j = i-1; j >= 0 && tmp < [mtlarray[j] intValue]; j--) {
    NSLog(@"i == %d j == %d 循环时tmp = %d array[j]=%d", i, j, tmp, [mtlarray[j] intValue]);
    mtlarray[j+1] = mtlarray[j];
    mtlarray[j] = [NSNumber numberWithInt:tmp];
    NSLog(@"循环时数组 = %@", mtlarray);
    }
    NSLog(@"tmp ===== %d", tmp);
    }
    NSLog(@"排序后数组 = %@", mtlarray);
    }

pragma mark - 冒泡排序算法 (升序)

/*
需要两层for循环,
第一层for循环决定了对比循环的圈数,(第一圈后,决定了最后一个数,第二圈后,决定了后两个数,下次圈循环时,这些数不需要再对比),
第二层for循环,是相邻元素的对比,按大小将两个元素交换位置即可.
*/

  • (void)bubbleSortWithArray:(NSArray *)array
    {
    NSMutableArray *mtlarray = [NSMutableArray arrayWithArray:array];
    NSLog(@"排序前数组 = %@", mtlarray);
    for (int i = 0; i < mtlarray.count-1; i++) {
    for (int j = 0; j < mtlarray.count-i-1; j++) {
    NSLog(@"循环时 i == %d j == %d array[j]=%d", i, j, [mtlarray[j] intValue]);
    if ([mtlarray[j] intValue] > [mtlarray[j+1] intValue]) {
    NSString *tmp = mtlarray[j];
    mtlarray[j] = mtlarray[j+1];
    mtlarray[j+1] = tmp;
    }

          NSLog(@"循环时数组 = %@", mtlarray);
      }
    

    }
    NSLog(@"排序后数组 = %@", mtlarray);
    }

pragma mark - 选择排序 (升序)

/*
每一次从待排序的数据元素中选出最小或最大的一个元素,存放在数组的起始位置,知道全部待排序的元素排完
*/

  • (void)selectedSortWithbubbleSortWithArray:(NSArray *)array
    {
    NSMutableArray *mtlarray = [NSMutableArray arrayWithArray:array];
    NSLog(@"排序前数组 = %@", mtlarray);
    for (int i = 0; i < mtlarray.count; i++) {
    for (int j = i+1; j < mtlarray.count; j++) {
    NSLog(@"循环时 i == %d j == %d", i, j);
    if ([mtlarray[i] intValue] > [mtlarray[j] intValue]) {
    NSString *tmp = mtlarray[i];
    mtlarray[i] = mtlarray[j];
    mtlarray[j] = tmp;
    }

          NSLog(@"循环时数组 = %@", mtlarray);
      }
    

    }
    NSLog(@"排序后数组 = %@", mtlarray);
    }

你可能感兴趣的:(2018-04-27 算法(插入,冒泡,选择))