美文网首页
iOS 快速排序

iOS 快速排序

作者: 无名指的情怀 | 来源:发表于2021-05-14 14:43 被阅读0次


核心代码

///=================快速排序

- (void)sort {

    self.array = [NSMutableArray array];

    for(inti =0; i <30; i++) {

        intsum =arc4random()%20000000;

        [self.array addObject:@(sum)];

    }

    NSLog(@"排序前 === %@",self.array);

    [self sort:0 end:(int)self.array.count];

    NSLog(@"排序后 === %@",self.array);

}

- (void)sort:(int)begin end:(int)end {

    if(end - begin <2) {

        return;

    }

    //确定轴点元素

    int mid = [self pivotIndex:begin end:end];

    //对子序列做快速排序

    [self sort:begin end:mid];

    [self sort:mid+1 end:end];

}

/// 确定轴点元素

/// @param begin 开始

/// @param end 结束

- (int)pivotIndex:(int)begin end:(int)end  { 

    //备份begin位置的元素

    id pivot = self.array[begin];

    //end 指向最后一个元素

    end--;

    while(begin < end) {

        while(begin < end) {

            if([self cmp:pivot end:self.array[end]] <0) {//右边元素 > 轴点元素

                end--;

            }else{//右边元素 <= 轴点元素

                self.array[begin++] = self.array[end];

                break;

            }

        }

        while(begin < end) {

            if([self cmp:pivot end:self.array[begin]] >0) {//左边元素 < 轴点元素

                begin++;

            }else{

                self.array[end--] = self.array[begin];

                break;

            }

        }

    }

    //将轴点元素放入最终的位置

    self.array[begin] = pivot;

    //返回轴点元素的位置

    return begin;

}

- (int)cmp:(id)first end:(id)second {

    int one = [first intValue];

    int two = [second intValue];

    if(one > two) {

        return 1;

    }

    if(one < two) {

        return -1;

    }

    return 0;

}

相关文章

  • iOS 中的冒泡、选择、快速、插入排序算法

    不喜勿喷, 不吝指教 冒泡排序 选择排序 插入排序 快速排序 参考链接:iOS 开发中常用的排序(冒泡、选择、快速...

  • iOS标准库中常用数据结构和算法之排序

    上一篇:iOS系统中的常用数据结构之链表 ?排序 排序是指将乱序数组变为有序排列的处理。iOS提供了快速排序、堆排...

  • 算法

    iOS冒泡排序、插入排序、选择排序、快速排序、二分查找用数组实现栈和队列专题:菲波那切数列与递归

  • iOS - 快速排序

    Demo_github 快速排序 快速排序(Quick Sort)是对冒泡排序的一种改进。通过一趟排序将要排序的数...

  • iOS快速排序

    时间复杂度:nlog(n)

  • iOS 快速排序

      快速排序(Quick Sort)是实际开发中经常选用的一种排序方式。其排序原理:取数组中的首个元素为轴点数据,...

  • iOS 快速排序

    首先我们看下为啥要使用快速排序,如:现在我们有一个数组,需要对里面的数据进行排序,使用最原始的双层for循环排序 ...

  • ios 快速排序

    - (void)viewDidLoad { [super viewDidLoad]; //初始化 创建数组...

  • iOS 快速排序

    核心代码 ///=================快速排序 - (void)sort { self.array...

  • 数组的排序

    系统提供的排序方法,我觉得应该是快速排序方法的封装 OC swift 还有其他排序的方法,可参考文章:iOS 数组...

网友评论

      本文标题:iOS 快速排序

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