文章分类 -  算法

摘要:一 插入排序1.1 直接插入排序基本思想:每次将一个待排序额记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。图解:代码实现: 1 //直接顺序排序 2 void InsertSort(int r[], int n) 3 { 4 for (int i=2; i... 阅读全文
posted @ 2015-03-27 16:09 momo_Unique 阅读(500) 评论(0) 推荐(0)
摘要:C语言中所谓的字符串不过是字符数组,后跟一个0x00字符标识结尾,所以反转起来很容易,只要一个循环依次将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换……如果最中间有两个字符(即需要反转的字符串长度为偶数),那就交换,如果最中间有一个字符(即需要反转的字符串长度为奇数),那就不需要... 阅读全文
posted @ 2015-03-27 15:47 momo_Unique 阅读(6207) 评论(0) 推荐(0)
摘要:思路1:排序法 对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同时移动指针p和q,并且记下相等的数字,为交集的元素之一,依次操作,直到其中一个集合没有元素可比较为止。 优... 阅读全文
posted @ 2015-03-27 14:52 momo_Unique 阅读(745) 评论(0) 推荐(0)
摘要:希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行... 阅读全文
posted @ 2015-03-27 13:34 momo_Unique 阅读(145) 评论(0) 推荐(0)
摘要:堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=... 阅读全文
posted @ 2015-03-26 14:19 momo_Unique 阅读(113) 评论(0) 推荐(0)
摘要:思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后... 阅读全文
posted @ 2015-03-26 10:48 momo_Unique 阅读(117) 评论(0) 推荐(0)
摘要:Description设a[0:n-1]是有n个元素的数组, k(0 2 using namespace std; 3 #define N 100 4 int a[N]; 5 6 void exchange(int a[],int k,int begin,int end) 7 { 8 ... 阅读全文
posted @ 2014-04-23 19:46 momo_Unique 阅读(695) 评论(0) 推荐(0)