4.冒泡排序 思路:左边大于右边交换一趟排下来最大的在右边 动图如下: 代码如下: //冒泡排序 void BubbleSort(int* arr, int n) { int end = n; while (end) { int flag = 0; for (int i = 1; i < end; ++i) { if (arr[i - 1] > arr[i]) { int tem = arr[i]; arr[i] = arr...
冒泡排序的特征非常明显:相邻交换,大数上(右)浮。 但选择排序和插入排序的特征好像不是很明显。以前在C++课的时候我一直疑惑,难道选择排序将最大数放到最右端的操作不能理解为一种“插入”吗?只是选择排序是交换,插入排序是依次移动而已。 现在根据我的理解,关键就在于已确定的因素不一样。 选择排序是“定位找数...
一、冒泡排序 1. 基本思想 2. python代码 3. 复杂度分析 二、选择排序 1. 基本思想 2. python代码 3. 复杂度分析 三、插入排序 1. 基本思想 2. python代码 3. 复杂度分析 四、希尔排序 1. 基本思想 2. python代码 3. 复杂度分析 五、归并排序 1. 基本思想 2. python代码 3. 复杂度分析 六、总结...
插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。 插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的...
一、冒泡排序 基本介绍: 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前向后移动,就像水底下的气泡一样逐渐往上冒。 注意优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换...
插入排序是将未排序的元素逐个插入到已排序序列中的合适位置;选择排序是在已排序序列中找到最小(大)元素,将其放到已排序序列的末尾;冒泡排序是通过不断比较相邻元素并交换位置来实现排序。时间复杂度不同 插入排序的时间复杂度为O(n^2),最坏情况下为O(n^2);选 择排序和冒泡排序的时间复杂度均为O(n^2),...
1、冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作就是重复地进行直到不需要再进行交换为止,也就是说该数列已经排序完成。这个算法的名字由来就是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
O(N^2)直接插入排序: 文字描述过程:第1趟插入:将第2个元素插入前面的有序子序列,此时前面只有一个元素,当然是有序的第2趟比较:将第3个元素插入前面的有序子序列,前面的2个元素是有序的...第n-1趟比较:将第n个元素插入前面的有序子序列,前面n-1个元素是有序的图片描述(第一种):图片描述...
对 20000 条接近有序的数据进行排序,检测结果冒泡排序消耗 2.282863s ,选择排序消耗 2.379822s ,插入排序消耗 0.006815s 。我们可以看到对于一个接近有序的序列,插入排序所消耗的时间远远要低于其他排序算法,那是因为对于一个接近有序的数据,插入排序的时间复杂度最优可达 O(n) 级别。
排序就是把一组数据中的元素按照一定的次序排列在一起。排序算法在很多领域受到相当高的重视,尤其是在大量数据的处理方法。一个优秀的算法可以节省大量的资源。本章节重点讲冒泡排序、选择排序、插入排序。 02 — 冒泡排序 假设列表中有5个数据,依次是32、10、28、51、46,将其按从大...