原理: 每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕 每一趟排序获得最小数的方法: for循环进行比较,定义一个第三个变量temp,首先前两个数比较,把较小的数放在temp中,然后用temp再去跟剩下的数据比较,如果出现比temp小的数据,就用它代替temp ...
分类:
编程语言 时间:
2018-03-07 13:36:15
阅读次数:
237
直接插入算法:每趟将一个待排序的关键字按照其值的大小插入到已经排好的部分有序序列的适当位置上,直到所有待排序的关键字都被插入到有序序列中为止。 理论上,在直接插入排序中第二层循环是可以提前结束的,即某个元素在寻找自己合适位置时并未循环遍历到序列最前端。 这是直接插入排序和简单选择排序最大的不同。也是 ...
分类:
编程语言 时间:
2018-03-06 16:59:37
阅读次数:
185
排序算法概览 插入排序 基本思想是每次讲一个待排序的记录,按其关键字大小插入到前面已拍好的子序列中,直到全部完成。 直接插入排序 讲元素L(i)插入到有序序列L[1,…,i-1]中,执行以下操作: 1. 查找出L(i)在L[1,…,i-1]中的插入位置k。 2. 将L[k,…,i-1]中所有元素全部 ...
分类:
编程语言 时间:
2018-03-05 11:12:16
阅读次数:
290
1、排序分类 比较排序:冒泡排序、选择排序、插入排序、归并排序、堆排序、快速排序(时间复杂度O(nlogn)~O(n^2)) 非比较排序:计数排序、基数排序、桶排序(时间复杂度O(n)) 2、冒泡排序 方法: // 分类 内部比较排序 // 数据结构 数组 // 最差时间复杂度 O(n^2) // ...
分类:
编程语言 时间:
2018-03-03 19:29:22
阅读次数:
176
#include int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置; */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;... ...
分类:
编程语言 时间:
2018-03-01 00:41:37
阅读次数:
254
碎碎念: 记得当初第一年的时候、接触算法、有那么两个视频、跳舞的、讲的是冒泡排序跟选择排序、当时看了好多遍最终懂了、这次多了一些算法、学起来也还好吧、咱是有基础的人、找到了曾经的视频、有的就发了、没找到的就没法、事实上算法并不难、绕绕就明确了、先别看代码- - 思维导图 插入排序 从头到尾巴、从第二 ...
分类:
编程语言 时间:
2018-02-28 21:33:16
阅读次数:
174
简单选择排序 是最简单直观的一种算法,基本思想: 每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。 简单选择排序是不稳定排序。 在算法实现时,每一趟确定最小元素的时候会通过不断地比较交换来使得首位置为当前最小,交换是个比较耗时的操作。 其实我们很容易发现,在还 ...
分类:
编程语言 时间:
2018-02-28 14:42:34
阅读次数:
144
内部排序算法主要分为插入类排序、交换类排序和选择类排序,它们在性能上的差异主要体现在时间复杂度、空间复杂度和稳定性。各种排序算法都会进行元素间的比较和移动,时间复杂度主要由整个排序过程中的比较次数和移动次数决定。空间复杂度体现在除了待排序记录本身所占的空间,排序过程中占用了多少辅助空间。 1.插入类 ...
分类:
编程语言 时间:
2018-02-28 12:57:08
阅读次数:
152
java排序算法(二) 直接选择排序 直接选择排序排序的基本操作就是每一趟从待排序的数据元素中选出最小的(或最大的)一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完,它需要经过n-1趟比较,算法不稳定,o(1)的额外的空间,比较的时间复杂度是o(n^2),交换的时间复杂度是o(n ...
分类:
编程语言 时间:
2018-02-26 13:36:16
阅读次数:
134