排序算法
文章平均质量分 57
基础不牢地动山摇
测试行业的小小鸟
展开
-
直接插入排序
直接插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。 1.初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1 2.将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。 3.i原创 2014-03-17 19:45:09 · 482 阅读 · 0 评论 -
排序之冒泡排序
/*冒泡排序的思想:需要进行n-1趟比较,每一趟比较将最大的元素排在最后一位 *第一趟比较,依次比较0和1、1和2、2和3 、.....、n-2和n-1处的索引元素,如果第一个数据大于后一个数据,则交换。经过第一趟比较,最大元素排在最后。 *第二趟比较,依次比较0和1、1和2、2和3 、.....、n-3和n-2处的索引元素,如果第一个数据大于后一个数据,则交换。经过第2趟比较,最大元素排原创 2014-03-11 18:43:26 · 430 阅读 · 0 评论 -
排序之选择排序
/*选择排序的思想:需要经过n-1趟比较。 * 第1趟比较:程序将记录定位在第1个数据上,拿第1个数据依次和它后面的每个数据进行比较, * 如果第1个数据大于后面某个数据,就交换它们......依次类推。经过第一趟比较,这组数据中的最小的数据被选出,它被排在第1位。 *第2趟比较:程序将记录定位在第2个数据上,拿第2个数据依次和它后面的每个数据进行比较, * 如果第2个数据大于后面原创 2014-03-11 19:04:46 · 509 阅读 · 0 评论 -
排序之堆排序
package csu.sort;/** * 堆排序 * 堆的定义:堆是一个完全,或近似完全的二叉树,堆顶元素的值大于左右孩子的值,左右孩子也需要满足这个条件; * 按照堆的定义,堆可以是大顶堆(maxHeap),或小顶堆(minHeap); * 一般用数组即可模拟二叉树,对于任意元素i,左孩子为2*i+1,右孩子为2*i+2;父节点为(i-1)/2 * 时间复杂度: 平均:O(nlo原创 2014-03-23 20:36:33 · 651 阅读 · 0 评论 -
排序之快速排序
快速排序在内部排序方法中效率较高,一般为O(n*logn),当数组有序的时候效率达到最低O(n*n),快速排序采用分治策略。基本思想是:1、先从数组中取出一个数为基准值; 2、将数组中的比基准值大或等于的放到基准值右边,小于基准值的全部放到基准值左边; 3、再对左右区间重复2步骤,知道区间只有一个数。快速排序有递归实现和非递归实现两种方式; 一、递归实现: pack原创 2014-03-17 16:15:03 · 598 阅读 · 0 评论 -
排序之二分排序
package csu.sort;import java.util.Arrays;import java.util.Random;/** * 归并排序 * 基本思想:就是合并两个有序的数组,采用的是分治策略,把一个数组分为若干个子数组; * 子数组的长度为1的时候,则子数组有序,于是可以两两归并 * 时间复杂度最好最坏的结果都是O(n*logn) * 空间复杂度为O(n) *原创 2015-08-18 11:02:39 · 455 阅读 · 0 评论