随笔分类 -  sort

摘要:#include using namespace std; namespace mySort { void qSort(int * data, int left, int right) { if (left >= right) return; int i = left; int j = right + 1; while (i data[left]); ... 阅读全文
posted @ 2014-08-21 21:12 旧客图新 阅读(107) 评论(0) 推荐(0)
摘要:选择排序算法原理不再多说,用下图或则代码比较好理解: 时间复杂度:O(N*N) 阅读全文
posted @ 2014-08-21 21:08 旧客图新 阅读(140) 评论(0) 推荐(0)
摘要:1、 冒泡排序基本思想 交换相邻两个数,如果不满足排序条件,那么就交换。每一次遍历数组后,那么最后一个元素必然是最大(小)的元素。如:{4,3,5,1},按照从大到小排序。 排序范围【0~3】,橙色为需要交换的元素,红色为当前排序范围的最大元素。 后面是两种改进算法,请读者慢慢体会。 时间复杂度 算 阅读全文
posted @ 2014-08-21 20:56 旧客图新 阅读(174) 评论(0) 推荐(0)
摘要:1、什么是堆? 堆实际上是一棵完全二叉树,任何一个父节点都大于其左右两个子树(如果有子树的话)。完全二叉树的性质还包括了父节点与直接子节点的关系。Index(父)=[Index(子)-1]/2 最大堆:Key[i]>=Key[2i+1]&&key>=key[2i+2];堆顶关键字最大。 最小堆:Ke 阅读全文
posted @ 2014-08-21 20:37 旧客图新 阅读(226) 评论(0) 推荐(0)
摘要:排序思路:插入排序,即插入有序队列。在遍历有序队列,当遍历到的数据和带排序的数据相等,或者刚好比带排序大 ,此时插入带排序的数据,插入后自然还是有序队列。 如:{12,1,12,3,4}。排序过程如下,红色为找到因该插入的位置。橙色为已经排好序的部分。 每次寻找插入位置的时间为O(N),寻找次数N。 阅读全文
posted @ 2014-08-09 20:54 旧客图新 阅读(218) 评论(0) 推荐(0)
摘要:桶排序的基本思想 桶排序利用函数的映射关系,将待排序的数组分成了N个块(桶)。实际上,桶排序的f(k)值的计算,其作用就相当于快排中划分,已经把大量数据分割成了基本有序的数据块(桶)。然后只需要对每个桶中的少量数据做比较排序(比较排序:即在比较的基础上进行交换,达到排序效果)即可。 假如待排序列K= 阅读全文
posted @ 2014-08-08 21:40 旧客图新 阅读(331) 评论(0) 推荐(0)
摘要:基本思想: 统计数组data,小于data[i]的个数为N,则把data[i]放在第N+1个位置上面。 实用范围: 所有数都在[0,max]范围内,max为数组的最大值,适用于max不是很大的情况。 对于数据2 5 3 0 2 3 0 3程序执行的过程如下图所示: C++代码: 总结:计数排序和通常 阅读全文
posted @ 2014-08-08 14:25 旧客图新 阅读(143) 评论(0) 推荐(0)