![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 74
aitim
这个作者很懒,什么都没留下…
展开
-
排序算法(八):快速排序
定义:将一个序列经过一次排序后分成两部分,其中一部分的关键字都比另一部分大,然后再分别对这两部分继续进行排序,直到得到一个有序的序列。时间复杂度:O(nlogn)空间复杂度:O(logn)实现public class Quick { public void sort(int[] arr){ qsort(arr,0,arr.length-1); }原创 2013-12-27 22:43:48 · 627 阅读 · 0 评论 -
排序算法(二):冒泡排序
定义:将待排序的记录两两比较,如果是反序的则交换,直到没有反序记录为止。实现:待排序记录 int[] array = {9,1,5,8,3,7,4,6,2};1、由前向后排序public class BubbleF2T { public void sort(int[] array){ for(int i=0;i<array.length;i++)原创 2013-12-26 18:40:21 · 523 阅读 · 0 评论 -
排序算法(三):选择排序
定义:假设有n个记录的序列,由最左边开始排序,每次排序都是在n-i+1个元素中选出最小的记录,与第i个元素进行交换。特点:每次排序只会发生一次数据交换。时间复杂度:最好是0,最坏是O(n^2)实现:public class Selection { public void sort(int[] arr){ int min=0;原创 2013-12-26 22:05:06 · 521 阅读 · 0 评论 -
排序算法(一):基本概念
排序的数学定义:假设含有n个记录的序列为{r1,r2,r3,......,rn},其相应的关键字序列为{k1,k2,k3,......,kn},需确定1,2,3,......,n的一种序列p1,p2,p3,......,pn,使其相应的关键字满足kp1排序的稳定性:假设ki=kj(1j),在排序前的序列中ri领先于rj(既i排序的分类:根据待排序的记录是否都放置原创 2013-12-26 17:34:08 · 605 阅读 · 0 评论 -
排序算法(四):插入排序
定义:将一个记录插入到一个已经排好序的序列中,从而得到一个新的、记录数加1的有序的序列。时间复杂度:最好是O(n),最差是O(n^2)实现:public class Insertion { public void sort(int[] arr){ for(int i=1;i<arr.length;i++){ if(arr[i]原创 2013-12-27 11:06:10 · 487 阅读 · 0 评论 -
排序算法(五):希尔排序
定义:将一个序列按照一定的“间距”分成几个子序列,把每个子序列进行插入排序,得到一个小数基本在前,大数基本在后的基本有序的序列,然后将“间距”逐渐缩小直到间距为1,最终得到一个有序的序列。时间复杂度:O(n^3/2)实现:public class Shell { public void sort(int[] arr){ int increment=a原创 2013-12-27 12:00:54 · 612 阅读 · 0 评论 -
排序算法(七):归并排序
定义:假设一个序列有n个记录,可以被看成是n个长度为1的子序列,将这些子序列两两归并,等到一个长度为2的子序列,再两两归并,直到子序列长度为n,就得到了一个有序的序列。时间复杂度:O(nlogn)实现:1、递归实现public class merge { public void sort(int[] arr){ int[] newarr= new int原创 2013-12-27 18:39:05 · 520 阅读 · 0 评论 -
排序算法(九):总结
1、算法分类根据算法采用的主要操作,可以将算法分为:插入排序、交换排序、归并排序、选择排序四大类,前面介绍的七种算法分别归属这四大类。排序算法插入排序交换排序选择排序归并排序插入排序希尔排序冒泡排序快速排序选择排序堆排序归并排序从算法的简单性来看,又可分为:简单算法、改进算法:简单算法:冒泡原创 2013-12-28 12:57:20 · 576 阅读 · 0 评论 -
排序算法(六):堆排序
堆定义:堆是一种完全二叉树,每个结点都大于等于其子结点的称为大顶堆,每个结点都小于等于其子结点的称为小顶堆。堆排序定义:将待排序的序列构造成一个大顶堆,此时堆顶是最大值,将其移到序列最末端后,剩余的序列重新构造一个大顶堆,如此反复直到得到一个有序序列。时间复杂度:O(nlogn)实现:public class Heap { public void sort原创 2013-12-27 15:58:05 · 625 阅读 · 0 评论