
排序算法
梦想田园
用学习去充实自己,用实践去证明自己,用梦想去展现自己
展开
-
排序算法-插入排序
//直接插入排序 /* 插入排序的思想彻底理清楚了,代码实现起来就非常简单了 基本思想:就像打扑克一样,将提取的每个元素不断的插入到已经排好序的数组中。 思想很简单,但是要实现代码,还需要将整个过程描述一遍。 1、首先第一个元素是排好序的,不用再排序,那就从第二个元素开始。 2、假设前面的n个元素是排好序的,那么接下来应该将第n+1个元素放到合适的位置,如何放呢:原创 2016-06-26 16:48:00 · 336 阅读 · 0 评论 -
排序算法-冒泡排序
冒泡排序的思想很简单,就是不断将最大的元素往后移动,第一次扫描,会将最大的元素移动到最后,然后再用类似的方式排序前n-1个元素。 当然冒泡排序实现可以通过递归实现,也可以通过循环迭代实现。原创 2016-06-27 15:44:34 · 306 阅读 · 0 评论 -
排序算法-归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。原创 2016-06-27 18:45:54 · 283 阅读 · 0 评论 -
排序算法-堆排序
堆排序的基本思想:将所有元素初始化一个最大堆,然后将第一个元素即最大元素与最后一个元素交换; 再对前n-1个元素调整为一个最大堆,就这样依次进行,每次都是把最大元素放到最后边。原创 2016-06-28 13:50:36 · 388 阅读 · 0 评论 -
排序算法-选择排序
#include using namespace std; //选择排序 /* 选择排序的思想比较简单:每次遍历数组选取最小值放到前面 下边实现的排序的辅助空间是O(1),但不是稳定的。 也可以使用O(n)的辅助空间,让其成为稳定排序 */ void SelectSort(int*list,int size) { for(int i=0;i {原创 2016-06-28 15:56:14 · 351 阅读 · 0 评论 -
排序算法-基数排序
第一步 以LSD为例,假设原来有一串数值如下所示: 73, 22, 93, 43, 55, 14, 28, 65, 39, 81 首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中: 0 1 81 2 22 3 73 93 43 4 14 5 55 65 6 7 8 28 9 39 第二步 接下来将这些桶子中的数值重新串接起来,成为以下的数列原创 2016-06-28 18:31:51 · 392 阅读 · 0 评论 -
排序算法-快速排序
快速排序的基本思想:随便选择其中一个元素,将它放在排好序时应该在的位置,并且保证它左边的元素都比它小或等于,右边的元素 都比它大或等于,然后采用同样的方式,对左边和对右边依次递归进行排序,最后整个数组就排好序了。原创 2016-06-27 12:04:44 · 352 阅读 · 0 评论