选择排序: 思想:每次选择出最小的值依次放到最前面 代码: [9, 1, 22, 31, 45, 3, 6, 2, 11][1, 9, 22, 31, 45, 3, 6, 2, 11][1, 2, 22, 31, 45, 3, 6, 9, 11][1, 2, 3, 31, 45, 22, 6, 9, ...
分类:
编程语言 时间:
2018-02-13 16:41:10
阅读次数:
150
选择排序的基本思想:每一趟(例如第i趟)在后面n-i+1(i=1,2,...,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟结束,待排序元素只剩下1个,不用再选了。 参考资料 《2017年数据结构联考复习指导》P295-296 ...
分类:
编程语言 时间:
2018-02-13 12:23:01
阅读次数:
102
1、直接排序(选择排序): 双重for循环,数组的第一个数a[0]和后面所有的数进行比对,得到最小的数,然后第二个数a[1]和后面所有的数进行比对,得到次小的数。。。反复后得到排序后的结果。 2、冒泡排序: 相邻的两个数相比,如果排序不对时,就对调位置;排序对时,不动。 第一轮比较后,有一个最大的数 ...
分类:
编程语言 时间:
2018-02-10 21:54:17
阅读次数:
139
【基本思想】 假设数组为int[] a = { 49, 38, 65, 97, 76, 13, 27 },数组元素个数为7个。 第1轮比较:先是a[0]与a[1]比较,大于则先交换,再比较a[0]和a[2]......最后是a[0]与a[6]比较。总共比较6次。(此时a[0]已是数组中的最小值) 第 ...
分类:
编程语言 时间:
2018-02-10 17:35:20
阅读次数:
187
时间复杂度为O(n²),空间复杂度为O(1)的三个算法,冒泡排序,选择排序,插入排序 冒泡排序(升序): 相邻两个数A、B进行比较,若A > B,交换A、B,下次比较B、C,依次进行。第一次将最大的数放在最后一个,第二次将第二大的数放在倒数第二个,依次进行n - 1次,最终排序完成。示例: 选择排序 ...
分类:
编程语言 时间:
2018-02-10 14:02:25
阅读次数:
144
absence 缺席 access访问存取通路进入 achieve 实现完成 acquire 获得 adjacency list method 邻接表表示法 adjacency matrix method 邻接矩阵表示法 algorithm 算法 allocate 留下分配 analog 推论 ap ...
分类:
其他好文 时间:
2018-02-08 00:28:13
阅读次数:
299
前面两篇介绍了两个非常简单和基础的排序算法——选择排序和插入排序,除了这两个,冒泡排序也是非常简单的一种排序算法。同样,本篇主要从“基本原理、排序流程、核心代码、算法性能、稳定性、参考代码”等几个方面介绍这一算法。 基本原理:依次比较两个相邻元素的大小,如果前一个元素大于(或小于)后一个元素,则两个 ...
分类:
编程语言 时间:
2018-02-08 00:24:21
阅读次数:
136
各种排序算法的稳定性和时间复杂度小结 各种排序算法的稳定性和时间复杂度小结 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡排序是稳定的,算法时间复杂度是O(n ^2)。 2.2 选择排序(Selection Sort) 选择排 ...
分类:
编程语言 时间:
2018-02-07 14:42:21
阅读次数:
136
本文对常见的排序算法进行了总结。 常见排序算法如下: 1. "直接插入排序" 2. "希尔排序" 3. "简单选择排序" 4. "堆排序" 5. "冒泡排序" 6. "快速排序" 7. "归并排序" 8. "基数排序" <! more 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算 ...
分类:
编程语言 时间:
2018-02-05 21:50:42
阅读次数:
246
前段时间被人问到排序算法,今天特此总结一下,冒泡,选择,快排,归并,插入这五种排序算法。 1.选择排序 选择排序是整体对比,每次选出你最需要的那个值,比如以下代码,首先选出最小的值,从小实现从小到大排序,外循环一次,内部循环记录下最小的坐标,只发生一次交换,它是一种稳定的排序算法,时间复杂度为o(n ...
分类:
编程语言 时间:
2018-02-05 12:31:11
阅读次数:
179