如不雅各位读者看完有所收成迎接在[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.代码实现
- #pragma mark - /**选择排序*/
- - (void)mb_selectionSort{
- for (int i = 0; i < self.count; i++) {
- for (int j = i + 1; j < self.count ; j++) {
- if (self.comparator(self[i],self[j]) == NSOrderedDescending) {
- [self mb_exchangeWithIndexA:i indexB:j];
- }
- }
- }
- }
冒泡排序
冒泡排序(Bubble Sort)也是一种简单直不雅的排序算法。它反复地访问过要排序的数列,一次比较两个元素,如不雅他们的次序缺点就把他们交换过来。访问数列的工作是反复地进行直到没有再须要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
1.算法步调
1. 比较相邻的元素。如不雅第一个比第二个大年夜,就交换他们两个。
2. 对每一对相邻元素作同样的工作,大年夜开端第一对到结尾的最后一对。这步做完后,最后的元素会是最大年夜的数。
3. 针对所有的元素反复以上的步调,除了最后一个。
4. 持续每次对越来越少的元素反复膳绫擎的步调,直到没有任何一对数字须要比较。
2.代码实现
- #pragma mark - /**冒泡排序*/
- - (void)mb_bubbleSort{
- bool swapped;
- do {
- swapped = false;
- for (int i = 1; i < self.count; i++) {
- if (self.comparator(self[i - 1],self[i]) == NSOrderedDescending) {
- swapped = true;
- [self mb_exchangeWithIndexA:i indexB:i- 1];
- }
- }
- }
推荐阅读
上篇(25 个术语)如不雅你刚接触大年夜数据,你可能会认为这个范畴很难以懂得,无大年夜下手。不过,你可以大年夜下面这份包含了 25 个大年夜数据术语的清单入手,那么我们开端吧。算法(Algorithm):算法可以懂得>>>详细阅读
本文标题:在Object-C中学习排序算法
地址:http://www.17bianji.com/lsqh/36561.html
1/2 1