排序算法
u010286334
这个作者很懒,什么都没留下…
展开
-
5 -- 归并排序(合并排序)
五、 归并排序(合并排序) 它是一种基于“分治”策略的一种算法。对于规模较大的问题,可以分解成若干容易求解的简单的问题,最后把解合并构成初始问题的解。 总时间=分解时间+解决问题时间+合并时间。原创 2015-05-28 17:19:43 · 586 阅读 · 0 评论 -
4 -- 交换排序之快速排序
四、快速排序算法 快速排序是冒泡排序的一种改进,冒泡排序排完一趟最大值冒出来了,那么可不可以先选定一个值,然后扫描待排序序列,把小于该值得记录和大于该值得记录分成两个单独的序列,然后分别对这两个序列进行上述操作。我们把选定的值作为枢纽值,如果枢纽值为序列中的最大值,那么一趟快速排序就变成了一趟冒泡排序。 快速排序时间与划分是否对称有关。快速排序的平均时间原创 2015-05-28 14:48:32 · 496 阅读 · 0 评论 -
3 -- 交换排序之冒泡排序
三、冒泡排序算法 冒泡排序基于交换 。每次从第一个记录开始,一二两个记录比较,大的往后放,二三两个记录比较,依次类推,这就是一趟冒泡排序。每一趟冒泡排序后,无序序列中值最大的记录冒岛序列末尾,所以称之为冒泡排序。 相对于简单选择排序,冒泡排序交换次数明显更多。它是通过不断地交换把最大的数冒出来。冒泡排序平均时间和最坏情况下(逆序)时间为o(原创 2015-05-28 14:42:45 · 414 阅读 · 0 评论 -
2 -- 选择排序之堆排序
二、堆排序 简单排序的时间复杂度是O(n^2),简单选择排序只要操作是进行关键字的比较,怎样减少比较次数就是改进的关键。 堆排序:A、B、C进行比赛,B战胜了A,C战胜了B,那么显然C可以战胜A,C和A就不用比了。 堆是一种数据结构, 是一颗完全二叉树且满足性质:所有非叶子结点的值均不大于或均不小于其左,右孩子原创 2015-05-28 14:41:29 · 423 阅读 · 0 评论 -
9 -- 鸡尾酒排序
九、鸡尾酒排序 鸡尾酒排序又叫定向冒泡排序,来回排序,涟漪排序,搅拌排序,快乐小时排序,它是冒泡排序的一种变形。 它和冒泡排序的不同之处在于:冒泡排序是单向进行的,而鸡尾酒排序是以双向在序列中进行排序的。 原理如下: 1)先对数组进行从左到右升序的冒泡排序; 2)再对数组进行从右到左的降序的冒泡排序;原创 2015-05-29 15:08:44 · 491 阅读 · 0 评论 -
6 -- 插入排序之直接插入排序
六、直接插入排序 插入排序:每次将一个待排序的记录,按其关键字大小插入到前面已经排序好的子文件的适当位置。 哨兵(监视哨)有两个作用:一是作为临变量存放R[i](当前要进行比较的关键字)的副本;二是在查找循环中用来监视下标变量j是否越界。 当文件的初始状态不同时,直接插入排序所耗费的时间是有很大差异的。最好情原创 2015-05-28 17:31:34 · 625 阅读 · 0 评论 -
8 -- 插入排序之希尔排序
八、希尔排序 希尔排序,是递减增量排序算法,是插入排序的一种高速而稳定的改进版本。基于以下两点性质改进: 1)插入排序对几乎排好序的数据操作,效率高。即可达到线性排序的效率。 2)插入排序一般来说是低效的,因为每次只能将数据移动一位。 希尔算法把比较的元素分为几个区域来提升性能。让一个元素可以一次性的朝原创 2015-05-29 11:37:37 · 381 阅读 · 0 评论 -
1-- 选择排序之简单选择排序
(1)简单选择排序和堆排序的基本思想是什么?(2)选择排序的本质是什么一、简单选择排序 简单选择排序最佳情况下,记录移动次数为0, 最坏情况下,记录移动次数n-1。外层循环进行了n-1趟选择,第i趟选择要进行n-i次比较,忽略移动记录时间(为一常数)。所以总时间是(n-1)*(n-i)=n^2-(i+1)*n+i。时间复杂度为O(n^2)。原创 2015-05-28 14:13:36 · 628 阅读 · 0 评论 -
7 -- 插入排序之折半插入排序
7、折半插入排序 折半插入:考虑到插入第i个元素前面的i-1个元素是有序的,计算0~i-1的中间点,和i个元素进行比较,这样完成了折半。然后不停地用上面的步骤,快速的找出第i个元素的位置。 //折半插入排序 public static void insertHalfSort(int a[]){ int i=0,j=0;原创 2015-05-29 11:09:25 · 555 阅读 · 0 评论