美文网首页
iOS---冒泡排序、插入排序、选择排序

iOS---冒泡排序、插入排序、选择排序

作者: 彬至睢阳 | 来源:发表于2018-09-02 16:33 被阅读0次

#pragma mark----冒泡排序----将相邻的两个元素两两比较,根据大小来交换元素的位置

- (NSArray*)bubbleSort:(NSArray*)origonArr{

     NSMutableArray *newArr = [[NSMutableArray alloc]initWithArray:origonArr];

    for(NSInteger indexI =0; indexI < newArr.count-1; indexI++){

        BOOL isSorted = YES;//用来标记每一层是否是有序的,默认为true.

        for(NSInteger indexJ =0; indexJ < newArr.count-1; indexJ++){

            if(newArr[indexJ] > newArr[indexJ+1]) {

                isSorted =NO;//// 如果有交换元素,那么不是有序,该bool值改为NO.

                [newArr exchangeObjectAtIndex:indexJ+1 withObjectAtIndex:indexJ];

            }

        }

        if(isSorted) {

            break;// 在内层中,如果该bool值没有被改为NO,那么就说明内层没有元素交换,那么该数列排序完成了,直接结束循环。

        }

    }

    returnnewArr;

}

#pragma mark---插入排序---

- (NSArray*)insertSort:(NSArray*)origonArr{

   NSMutableArray *newArr = [[NSMutableArray alloc]initWithArray:origonArr];

  for(NSInteger indexI =1; indexI <newArr.count; indexI++) {

        for(NSInteger indexJ = indexI; indexJ >0; indexJ--) {

             if(newArr[indexJ-1] > newArr[indexJ]) {

                [newArr exchangeObjectAtIndex:indexJ-1 withObjectAtIndex:indexJ];

            }else{

                break;

            }

        }

    }

    returnnewArr;

}

#pragma mark-----选择排序---就是先找出数组中最小的,然后依次找出数据并排序

- (NSArray*)selectionSort:(NSArray*)origonArr{

  NSMutableArray *newArr = [[NSMutableArray alloc]initWithArray:origonArr];

    for(NSInteger indexI =0; indexI<newArr.count; indexI++) {

        NSInteger minIndex = indexI;

        for(NSInteger indexJ = indexI+1; indexJ<newArr.count; indexJ++) {

            if(newArr[indexJ] < newArr[minIndex]) {

            minIndex = indexJ;

           }

        }

        [newArr exchangeObjectAtIndex:indexI withObjectAtIndex:minIndex];

    }

    returnnewArr;

}

相关文章

网友评论

      本文标题:iOS---冒泡排序、插入排序、选择排序

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