2016年3月18日

摘要: 关于排序可以看下这两个: http://blog.csdn.net/hguisu/article/details/7776068 后面有各算法之间的区别,在什么情况下使用 http://www.cnblogs.com/kkun/archive/2011/11/23/2260312.html 各个算法 阅读全文
posted @ 2016-03-18 17:59 JuneXiang 阅读(234) 评论(0) 推荐(0)
 
摘要: 桶排序: 条件是已知所排的序列的范围,比如说数组都是1到100以内的数字,设置多个桶,将数组中的数按照在那个桶中就放入到哪个桶中,同一桶中进行排序,最后得到的就是有序的数组了。 例如: 5,2,1,4,6,9 设置十个桶: 0,1,2,3,4,5,6,7,8,9 将数组中的数据放入到桶中就排好序列了 阅读全文
posted @ 2016-03-18 14:27 JuneXiang 阅读(194) 评论(0) 推荐(0)

2016年3月17日

摘要: 堆排序: 是种特殊的选择排序 堆是一种完全二叉树,满足 a[i]<=a[2i] a[i]<=a[2i+1] (小顶堆) 或都大于(大顶堆) 第一步:将数组变成大顶堆或是小顶堆 第二部:将堆顶的元素与最后的一个元素进行互换,且将除去最后一个元素的数组变成一个大顶堆或是小顶堆,直到数组只有一个值停止 代 阅读全文
posted @ 2016-03-17 19:46 JuneXiang 阅读(347) 评论(0) 推荐(0)
 
摘要: 哈希排序: 改进了得插入排序,将待排序的数组根据差量分成若干的的子数组,分别进行插入排序,最后一步当差量为1的时候也就是直接的插入排序了,只是这时数组的序列已经大概是有序的了。 关键是增量 代码如下: 结果如下: 注意: 这个排序的方法增量的选取决定了排序的效率,一般选的是(n/2,n/4,n/8. 阅读全文
posted @ 2016-03-17 17:36 JuneXiang 阅读(11495) 评论(1) 推荐(0)
 
摘要: 归并排序: 将待排序的数组划分成若干的子数组使得这些子数组都是有序的,再将这些数组进行并,使得合并后的数组也是有序的,最后得到的数组既是已排好序的数组了 代码如下: 注意: 阅读全文
posted @ 2016-03-17 13:20 JuneXiang 阅读(228) 评论(0) 推荐(0)

2016年3月16日

摘要: 快速排序: 将待排的序列一分为二,将待排序的第一个值作为基准,比这个值小的放在基准值的前面,比这个值大的放在基准值的后面,然后再将小的部分和大的部分进行一份为二,直到全部分完就已排好序 代码如下: 注意: 1.运用了递归的思想 2.划分的时候应该注意有两个标志值i,j ,i为当前所要分割数组的第一个 阅读全文
posted @ 2016-03-16 13:40 JuneXiang 阅读(159) 评论(0) 推荐(0)
 
摘要: 选择排序: 在待排的序列中找到最大的数字,将此数字放在已排序列的最后,直到全排完 代码如下: 注意: 与冒泡排序的区别是冒泡是邻近的两两比较,进行互换位置,而选择排序是每次得到一个最大的与此次序列的第一个进行互换位置 结果如下: 阅读全文
posted @ 2016-03-16 12:53 JuneXiang 阅读(169) 评论(0) 推荐(0)
 
摘要: 插入排序: 类似于玩扑克牌抓牌的动作 从一个待排序的数组中拿出一个数字插入到一个已排好序的数组中,使得已排好序的数组仍是个有序的数组 代码如下: 注意: 1.从第二个数字开始 2.待排序的数字是个哨兵元素,用哨兵元素与排好序的元素从后往前进行对比,数字比哨兵元素大则该数字后移,直到找到第一个比哨兵元 阅读全文
posted @ 2016-03-16 12:44 JuneXiang 阅读(334) 评论(0) 推荐(0)
 
摘要: 冒泡排序: 将邻近的数字两两进行比较,按照从大(小)到小(大)的顺序进行交换, 每一趟下来就会有使得最大或者最小的数字冒到本趟循环的最后一个数字。 代码如下: 运行结果如下: <!--StartFragment --> 阅读全文
posted @ 2016-03-16 12:26 JuneXiang 阅读(195) 评论(0) 推荐(0)