摘要: 基数排序(radix sorting)将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。 然后 从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 假设我们有一些二元组(a,b),要对它们进行以a为首要关键字,b为次要关键字的排序 阅读全文
posted @ 2016-12-03 22:54 wj_hubei 阅读(540) 评论(0) 推荐(0)
摘要: 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序是不稳定的排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序 阅读全文
posted @ 2016-12-03 21:32 wj_hubei 阅读(217) 评论(0) 推荐(0)
摘要: 最优复杂度:当输入数组就是排好序的时候,复杂度为O(n),而快速排序在这种情况下会产生O(n^2)的复杂度。 最差复杂度:当输入数组为倒序时,复杂度为O(n^2) 其实插入排序的复杂度和逆序对的个数一样,当数组倒序时,逆序对的个数为n(n-1)/2,因此插入排序复杂度为O(n^2)。 插入排序比较适 阅读全文
posted @ 2016-12-03 19:13 wj_hubei 阅读(339) 评论(0) 推荐(0)
摘要: 归并排序是创建在归并操作上的一种有效的排序算法,效率为O(nlogn),1945年由冯·诺伊曼首次提出。 归并排序的实现分为递归实现与非递归(迭代)实现。递归实现的归并排序是算法设计中分治策略的典型应用,我们将一个大问题分割成小问题分别解决,然后用所有小问题的答案来解决整个大问题。非递归(迭代)实现 阅读全文
posted @ 2016-12-03 16:25 wj_hubei 阅读(197) 评论(0) 推荐(0)
摘要: 基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 操作方法: 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换; 阅读全文
posted @ 2016-12-03 15:54 wj_hubei 阅读(337) 评论(0) 推荐(0)
摘要: 泡排序是一种极其简单的排序算法,也是我所学的第一个排序算法。它重复地走访过要排序的元素,一次比较相邻两个元素,如果他们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 时间复杂度 最 阅读全文
posted @ 2016-12-03 15:24 wj_hubei 阅读(290) 评论(0) 推荐(0)
摘要: 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度最少可达到O(n log n),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数 阅读全文
posted @ 2016-12-03 14:59 wj_hubei 阅读(352) 评论(0) 推荐(0)