//冒泡法进行排序 for (i = 0; i < 9;i++) //进行比较9趟 { for (j = 0; j < 9 - i;j++) //比较次数依次递减 { if (a[j]>a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp ...
分类:
编程语言 时间:
2020-07-02 13:29:26
阅读次数:
58
稳定性:不稳定排序 1.过程介绍 希尔排序,又名递减增量排序算法,是一种非稳定的更高效的插入排序,在对几乎已经排好序的数据操作时,效率极高,即可以达到线性排序的效率,直接插入排序整体来说是低效的,因为插入排序每次只能将数据移动一位; 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分 ...
分类:
编程语言 时间:
2020-07-01 15:47:54
阅读次数:
57
一、简单排序 1.1:直接插入排序:在插入第i个记录时,R1,R2,...Ri-1,Ri已经排好序,这时将关键字ki依次与关键字ki-1, ki-2,...,k1进行比较,从而找到应该插入的位置,然后将ki插入,插入位置及其后面的记录依次向后移。 简单地理解就是从后找起,找到合适的位置插入,然后不断 ...
分类:
编程语言 时间:
2020-06-30 22:09:38
阅读次数:
71
本博客总结学习堆排序算法,以一个数组为例,采用大根堆进行升序排序,附有代码实现。 堆排序的思想 堆排序的逻辑是建立在完全二叉树的基础上。 有两个概念必须要了解: 大根堆:每个结点值都大于等于左右孩子结点值 小根堆:每个结点值都小于等于左右孩子结点值 以大根堆为例,将根结点与最后一个结点交换,弹出根结 ...
分类:
编程语言 时间:
2020-06-30 13:03:10
阅读次数:
63
简述一些常用算法,并用代码实现它。 注:动图是在网上找的。 (1)冒泡排序 核心思想:交换序列中相邻两个整数。 测试代码: 1 void bubble_sort(void) 2 { 3 /* 4 * 冒泡排序:以降序为例进行说明 5 * 比较相邻的元素,将值最小的元素交换到右边。 6 */ 7 in ...
分类:
编程语言 时间:
2020-06-30 00:30:44
阅读次数:
69
基础排序算法:(都以从小到大为例)都是n^2的复杂度 冒泡排序:每次在没排好的地方相邻两两比较,大的交换到后面继续比较,这样一轮下来最后面的肯定是未排序的最大的。 选择排序:每次从没排好的地方比较(起初指定第一个为最大值),如出现更大值更换最大值标记,最后将最大值标记与当前未排序最后一位进行交换。这 ...
分类:
其他好文 时间:
2020-06-28 09:33:42
阅读次数:
56
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 ...
分类:
编程语言 时间:
2020-06-28 00:09:58
阅读次数:
71
1.介绍 选择排序算法属于内部排序算法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置达到排序的目的 时间复杂度:O(n^2) 双层for 2.思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选取最小值, ...
分类:
编程语言 时间:
2020-06-26 16:30:07
阅读次数:
127
1.介绍 冒泡排序的基本思想就是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡一样逐渐向上冒泡。 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中 ...
分类:
编程语言 时间:
2020-06-26 14:57:52
阅读次数:
59