随笔分类 -  <排序查找算法>

摘要:1.核心思想:希尔排序是插入排序的一种,是直接插入排序的一种改进版本,他们同属于插入排序类。这是一个不稳定的排序算法。采取跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序。2.代码实现: 3.稳定性分析:一次插入排 阅读全文
posted @ 2019-08-06 13:17 Aaaaaalei 阅读(139) 评论(0) 推荐(0) 编辑
摘要:1 #include 2 using namespace std; 3 4 int BinarySearch(int arr[],int begin,int end,int num) 5 { 6 if(arr == NULL || begin = end) return -1; 7 8 int mid = (begin+end)/2; 9 if(ar... 阅读全文
posted @ 2019-07-21 13:37 Aaaaaalei 阅读(99) 评论(0) 推荐(0) 编辑
摘要:代码实现: 阅读全文
posted @ 2019-07-20 18:51 Aaaaaalei 阅读(158) 评论(0) 推荐(0) 编辑
摘要:1.核心思想:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数+1的有序表。2.代码实现: 3.复杂度分析:直接插入排序在某些时候效率是很高的,如记录本身就是基本有序的,我们只需要少量的插入操作,就可以完成整个记录的排序工作,此时直接插入很高效。还有就是记录数比较少的时候,直接插入的优 阅读全文
posted @ 2019-07-20 18:49 Aaaaaalei 阅读(157) 评论(0) 推荐(0) 编辑
摘要:1.基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.代码实现: 阅读全文
posted @ 2019-07-20 18:48 Aaaaaalei 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1.核心思想:每一趟在n-i+1中选取关键字最小的记录作为有序序列的第i个记录。简单排序最大的特点就是交换移动次数相当少,这样就节约了时间。通过分析时间复杂度也就是说如果从小到大进行排序,找最大的往后放或者找最小的往前放。简单选择排序没有优化,对数组没有要求。有序或者无序都没有差别。2.代码实现: 阅读全文
posted @ 2019-07-20 18:47 Aaaaaalei 阅读(255) 评论(0) 推荐(0) 编辑
摘要:1.核心思想:根据要求,对数组进行相邻的两两元素之间的比较,如果反序就进行交换,直到数组没有反序的相邻的元素为止。2.实现:①非标准冒泡排序:让每一个关键字arr[i],都和它后面的每一个关键字做比较(即从arr[i+1]开始比较,依次向后),如果大则交换,这样第一位置的关键字在一次循环之后一定会变 阅读全文
posted @ 2019-07-20 18:45 Aaaaaalei 阅读(177) 评论(0) 推荐(0) 编辑