Yonker's Blog

码农,程序猿,未来的昏析师

0%

基本思想

是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间Θ(n)。但桶排序并不是 比较排序,他不受到O(nlog2n)下限的影响。

阅读全文 »

基本思想

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

阅读全文 »

基本思想

  1. 选择一个基准元素,通常选择第一个元素或者最后一个元素;
  2. 通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大;
  3. 此时基准元素在其排好序后的正确位置;
  4. 然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
阅读全文 »

基本思想

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

阅读全文 »

基本思想

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第2个数)和第n个元素(最后一个数)比较为止。

操作方法

  1. 第一趟,从n个记录中找出关键码最小的记录与第1个记录交换;
  2. 第二趟,从第2个记录开始的n-1个记录中再选出关键码最小的记录与第2个记录交换;
  3. 以此类推…..
  4. 第i趟,则从第i个记录开始的n-i+1个记录中选出关键码最小的记录与第i 个记录交换,直到整个序列按关键码有序。
阅读全文 »

基本思想

堆的定义如下:具有n个元素的序列(k1,k2,…,kn),当且仅当满足

时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。
若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。

阅读全文 »

基本思想

先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

操作方法

  1. 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
  2. 按增量序列个数k,对序列进行k趟排序;
  3. 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
阅读全文 »

基本思想

将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
###要点
设立哨兵,作为临时存储和判断数组边界之用。

阅读全文 »

声明

本文只是给类似我这样的git新人做参考,对git比较熟悉的话可以无视了。由于自身对git的了解就不是特别深,所以可能有些地方会有错误,欢迎各位指正。(本文有在微博上接受geekrainy的帮助,对此表示谢意)
ps:建议git相关操作都在bash上进行操作。不依赖windows下gui

阅读全文 »