作家
登录

在Object-C中学习排序算法

作者: 来源: 2017-08-06 12:49:35 阅读 我要评论

如不雅各位读者看完有所收成迎接在[Github](https://github.com/MisterBooo/Play-With-Sort-OC)上给个star (*^__^*)**

笔者在进修数据构造与算法时,测验测验着将排序算法以动画的情势出现出来加倍便利懂得记忆,本文合营[Demo 在Object-C中进修数据构造与算法之排序算法](https://github.com/MisterBooo/Play-With-Sort-OC)浏览更佳。

目次

* 选择排序

* 冒泡排序

* 插入排序

* 快速排序

* 双路快速排序

* 三路快速排序

* 堆排序

* 总结与收成

* 参考与浏览

选择排序

选择排序是一种简单直不雅的排序算法,无论什么数据进去都是 O(n?) 的时光复杂度。所以用到它的时刻,数据范围越小越好。独一的好处可能就是不占用额外的内存空间了吧。

1.算法步调

1. 起首在未排序序列中找到最小(大年夜)元素,存放到排序序列的肇端地位

3. 反复第二步,直到所有元素均排序完毕。

2.代码实现

  1. #pragma mark - /**选择排序*/ 
  2. - (void)mb_selectionSort{ 
  3.     for (int i = 0; i < self.count; i++) { 
  4.         for (int j = i + 1; j < self.count ; j++) { 
  5.             if (self.comparator(self[i],self[j]) == NSOrderedDescending) { 
  6.                 [self mb_exchangeWithIndexA:i  indexB:j]; 
  7.             } 
  8.         } 
  9.     } 

冒泡排序

冒泡排序(Bubble Sort)也是一种简单直不雅的排序算法。它反复地访问过要排序的数列,一次比较两个元素,如不雅他们的次序缺点就把他们交换过来。访问数列的工作是反复地进行直到没有再须要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

1.算法步调

1. 比较相邻的元素。如不雅第一个比第二个大年夜,就交换他们两个。

2. 对每一对相邻元素作同样的工作,大年夜开端第一对到结尾的最后一对。这步做完后,最后的元素会是最大年夜的数。

3. 针对所有的元素反复以上的步调,除了最后一个。

4. 持续每次对越来越少的元素反复膳绫擎的步调,直到没有任何一对数字须要比较。

2.代码实现

  1. #pragma mark - /**冒泡排序*/ 
  2. - (void)mb_bubbleSort{ 
  3.     bool swapped; 
  4.     do { 
  5.         swapped = false
  6.         for (int i = 1; i < self.count; i++) { 
  7.             if (self.comparator(self[i - 1],self[i]) == NSOrderedDescending) { 
  8.                 swapped = true
  9.                 [self mb_exchangeWithIndexA:i  indexB:i- 1]; 
  10.             } 
  11.         } 
  12.     } 
     1/7    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      关于大数据,你应该知道的75个专业术语

    上篇(25 个术语)如不雅你刚接触大年夜数据,你可能会认为这个范畴很难以懂得,无大年夜下手。不过,你可以大年夜下面这份包含了 25 个大年夜数据术语的清单入手,那么我们开端吧。算法(Algorithm):算法可以懂得>>>详细阅读


    本文标题:在Object-C中学习排序算法

    地址:http://www.17bianji.com/lsqh/36561.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)