摘要: 算法思想:对n个数进行排序,需进行n-1趟排序,每次归位一个数。每次比较两个相邻的元素,如果他们的顺序错误,就把它们交换过来。复杂度:O(N2)优化:记录是否发生交换(true:是,false:否)算法代码: 1 #include "stdafx.h" 2 #include 3 #include ... 阅读全文
posted @ 2015-03-26 20:40 人生不酱油 阅读(145) 评论(0) 推荐(0)
摘要: 算法思想:每次在未排序的序列中找最大的数,将其放在未排序序列的最后位置,重复该过程,知道所有元素排序完毕。 算法代码: 1 #include "stdafx.h" 2 #include 3 #include 4 using namespace std; 5 6 template 7 v... 阅读全文
posted @ 2015-03-26 20:39 人生不酱油 阅读(117) 评论(0) 推荐(0)
摘要: 基数排序基于多关键字排序的思想,即把一个逻辑关键字拆分成多个关键字。 基数排序有两种实现方式:第一种叫做最高位优先(MSD),即先按最高位排成若干子序列,再对每个子序列按次高位排。第二种叫做最低位优先(LSD),这种方式不必分成子序列,每次排序全体元素都参与。最低位可以优先这样进行,不通过比较... 阅读全文
posted @ 2015-03-26 20:26 人生不酱油 阅读(461) 评论(0) 推荐(0)
摘要: 基于比较的排序算法是不能突破O(NlogN)的,而非基于比较的排序,如计数排序、桶排序和计数排序,则可以突破O(NlogN)的时间下限。但要注意的是,非基于比较的排序算法的使用都是有条件限制的,例如元素的大小限制,而基于比较的排序则没有这种限制(在一定范围内)。对特定场合有着特殊性质的数据,非基... 阅读全文
posted @ 2015-03-26 14:54 人生不酱油 阅读(834) 评论(0) 推荐(0)
摘要: 归并排序是将两个或两个以上的有序子表合并成一个新的有序表。它的基本思想是分治法。对于二路归并而言,初始时将含有n个节点的待排序序列看作由n个长度为1的有序子表组成,将它们一次两两归并得到长度为2的若干有序子表,再对它们两两合并,知道得到长度为n的有序表,排序结束。 与快速排序和堆排序相比,归并... 阅读全文
posted @ 2015-03-26 12:32 人生不酱油 阅读(1303) 评论(0) 推荐(0)