01 2014 档案
摘要:这两个排序一起写是因为基数排序里面调用了基数排序。首先两个排序都是针对整数的排序,时间复杂度都是O(n)1.计数排序: 计数排序的主要思想就是数出数组中比数m小的数的个数,推算出m排序后的位置,例如数组2 5 3 0 2 3 0 3,我们从小到大数出有2个0,2个2,3个3和1个5.所以两个0放在第一位和第二位上,两个2放在接下来的第3,4位上,依次类推。 算法代码主要分为3个循环,第一个循环数出待排序数组中各个数有几个,第二个循环计算出每个数的位置,第三个循环把每个数放到对应的位置上。代码如下: 1 #include 2 using namespace std; 3 4 void cou..
阅读全文
摘要:终于有时间坐下来写一写这半年学习的算法,否则又要白学了。1.Partition函数: 快排中最重要的是划分算法Partition(A,l,r):该算法输入是数组A,以及我们在这次划分中考虑的元素的范围——从下标为l的元素考虑到下标为r的元素。假设总是选取下标为r的元素作为轴p,那么一次划分结束后,p元素左边的元素都比它小,右边的元素都比它大。例如:有数组2 3 1 3 4 2 ,选取末尾红色的2为轴,经过一次划分后数组变为2 1 2 3 4 3,可以看到划分后轴元素2的左边都是小于等于2的元素,右边都是大于2的元素。 记住算法中重要的变量就可以快速的写出算法,划分函数中主要有三个:i,j,p;
阅读全文