共 6 篇文章 |
|
漫谈经典排序算法:五、线性时间排序(计数、基数、桶排序)1、序言。这是《漫谈经典排序算法系列》第五篇,给出了三种线性时间排序,分别是计数排序、基数排序、桶排序。3、基数排序 3.1 引出。同计数排序一样,桶排序也对待排序序列作了假设,桶排序假设序列由一个随机过程产生,该过程将元素均匀而独立地分布在区间[0,1)上。如果有多... 阅843 转9 评1 公众公开 13-01-12 00:43 |
漫谈经典排序算法。1、这是《漫谈经典排序算法》最后一篇,总结了各种排序算法的时间复杂度、稳定性、辅助空间、约束条件。各种排序算法的解析请参考如下:2、各种算法分析如下。更正:归并排序是稳定的内部排序。 阅65 转0 评0 公众公开 13-01-12 00:39 |
} int Partition(int [] arr,int low,int high) { int pivot=arr[low];{ foreach (int number in arr)//分桶 { currentItem = number.ToString();//将当前元素转化成字符串 try { currnetChar = currentItem[currentItem.Length-i-1]; }//从个位向高位开始分桶 catch { listArr[0].Add(number... 阅75 转1 评0 公众公开 13-01-12 00:37 |
原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。//i and j are seperate sort value and 、、//random valueint temp = 0;for(i = 0; i <length -1; i++){j = i + 1;if(array[j] <array[i]){temp = array[j];while(array[i] >temp){ar... 阅35 转1 评0 公众公开 13-01-07 16:10 |
的初始化也容易实现,只要先令所有的非终端结点指向一个含最小关键码的叶子结点,然后从各叶子结点出发调整非终端结点为新的败者即可。void Adjust(LoserTree *ls,int s) /*选得最小关键码记录后,从叶到根调整败者树,选下一个最小关键码*/ { /*沿从叶子结点b[s]到根结点ls[0]的路径调整败者树*/ t=(s+k)/2; /*ls[t]是b[s]的双亲结点*/ while(... 阅98 转1 评0 公众公开 13-01-07 16:08 |
void PrintArray(int *pArray, int iElementNum);while (iLeft<iRight &&pArray[iLeft]<iPivot) ++iLeft;pArray[iLeft] = pArray[iRight];if(iElementNum-iLeft-1>=1)QuickSort(&pArray[iLeft+1], iElementNum-iLeft-1);if(iElementNum-iLeft-1>=30)ImprovedQuickSort(&pArray[iLeft+1], iElementNum-iLeft-1);Str... 阅21 转0 评0 公众公开 13-01-05 00:04 |