冒泡排序(升序为例) 思路: 1. 从头开始比较每一对相临的元素,其后者比前者大则交换,直到一轮比较结束 2. 排除1中找到最大的元素,重复1的步骤 Swift class SelectionSort { var array = [5, 7, 2, 8, 9, 4, 7, 3, 2] func so ...
分类:
编程语言 时间:
2020-04-19 14:29:32
阅读次数:
60
快速排序(Quicksort)是对冒泡排序的一种改进,由C. A. R.Hoare在1960年提出。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个 ...
分类:
编程语言 时间:
2020-04-19 13:05:04
阅读次数:
72
题意描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解题思路 一、冒泡排序/选择排序 对数组进行排序,从数组中取出最小的k个数。不需要对数组全部排序,只需要找出前k个数即可。 二、快速排序 利用快速排序 划分 的思想, ...
分类:
其他好文 时间:
2020-04-18 22:49:10
阅读次数:
54
冒泡排序 冒泡排序是大多数人学的第一种排序算法,在面试中,也是问的最多的一种,有时候还要求手写排序代码,因为比较简单。 冒泡排序属于交换类的排序算法。 一、算法介绍 现在有一堆乱序的数,比如: 。 第一轮迭代:从第一个数开始,依次比较相邻的两个数,如果前面一个数比后面一个数大,那么交换位置,直到处理 ...
分类:
编程语言 时间:
2020-04-18 13:35:43
阅读次数:
55
冒泡排序原理:(升序)通过当前位置数和后一个位置数进行比较 如果当前数比后一个数大 则交换位置, 完成后 比较基数的位置变成下一个数。直到数组末尾,当程序运行完第一遍 最大的数已经排序到最后一个位置了。次数可以减少循环数不用管最后一个数 降序排序同理 不过是把比较方式变成判断当前数是否小于下一个数 ...
分类:
编程语言 时间:
2020-04-17 09:55:23
阅读次数:
88
概述 冒泡排序是一种简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 比较相邻的元素。如果第... ...
分类:
编程语言 时间:
2020-04-17 09:36:05
阅读次数:
84
排序 交换、插入、选择、归并 稳定:a在b前,a = b,排序后,a仍在b前。 不稳定:a在b前,a=b,排序后,a可能在b后。 交换排序 冒泡 稳定——平均O(n^2),最好O(n),最坏O(n^2) 快排 不稳定——平均O(NlogN),最好O(NlogN),最坏O(N^2) 冒泡排序 pack ...
分类:
编程语言 时间:
2020-04-16 14:55:02
阅读次数:
52
目录 1. 冒泡排序 2. 选择排序 3. 插入排序 4. 快排 5. 堆排 6. 归排 1. 冒泡排序(最好是O(n), 最坏O(n2)) 原理:拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结束后最上面那个一定是最大的数 1 def bubbl ...
分类:
编程语言 时间:
2020-04-14 12:45:57
阅读次数:
93
/** * 快速排序算法 */ void quick_sort (int *s, int l, int r) { if (l < r) { int i = l, j = r, x = s[l]; while (i < j) { while (i < j && s[j] >= x) j--; if ( ...
分类:
编程语言 时间:
2020-04-12 20:59:53
阅读次数:
84
冒泡排序 通过对列表中的元素进行两两比较,数值大的交换位置,知道最后一个,依次比较,得出有序序列。 冒泡思路 发现上述代码已经可以将序列中的最大值放置到合适的位置,然后我们就可以将上述操作继续作用到n 1个元素对应的新序列,则就可以将n 1个元素对应的最大值放置到了n 1个元素的最后位置。 结论:发 ...
分类:
编程语言 时间:
2020-04-12 14:39:43
阅读次数:
71