数据结构
文章平均质量分 70
QA静静
脚踏实地,奋勇前进
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【排序算法】归并排序(java实现)
1.基本思想:归并排序指的是将两个已经排序的序列合并成一个序列的操作。主要分为两种,分别是自顶向下的排序方式和自底向上的排序方式。对于自顶向下的排序算法:采用分治法进行自顶向下的程序设计方式,分治法的核心思想就是分解、求解、合并。(1)将长度为N的无序序列平均分割成两个子序列(2)对这两个子序列分别进行归并排序(3)将排序好的两个子序列进行归并排序对于自原创 2016-04-28 15:58:01 · 703 阅读 · 0 评论 -
【排序算法】 冒泡排序(java实现)
1.基本思想:依次两两比较,较小的浮上来,较大的往下沉。2.算法分析:平均时间复杂度:O(n2) 空间复杂度:O(1) (用于交换)稳定性:稳定3.算法实现: public static int[] BubbleSort(int[] array){ int tmp; for(int i=1 ; i< array.length-1 ; i++原创 2016-04-27 17:49:06 · 524 阅读 · 0 评论 -
【原创】堆排序(java实现)
1.基本思想:堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。何为堆?堆是一个近似完全二叉树的结构,并同时满足堆性质:Key[i] = Key[2i+1] && key >= key[2i+2] (下标从1开始)即子结点的键值或索引总是小于(或者大于)它的父节点。一般用数组进行存储。堆排序基本思想:堆一般分为大顶堆和小顶堆,大顶堆原创 2016-04-30 10:38:26 · 544 阅读 · 0 评论 -
【排序算法】八大排序算法总结
排序分为内部排序和外部排序,常用的为以下八大内部排序(使用内存)。稳定性定义:在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即如果相同的记录 ri ,rj 经过排序后ri 仍在rj之前,则被认为是稳定的。 如上图所示, 希尔、快速、直接选择、堆,这四种排序是不稳定的。快速、堆、归并三种排序的时间复杂度较好,均为O(nl原创 2016-04-30 16:48:15 · 732 阅读 · 0 评论 -
【排序算法】简单选择排序(java实现)
1.基本思想选择排序是指在数组A[n]中,刚开始有序数组中个数为0,首先遍历整个数组,找到最小的数跟A[0]交换,再从A[1]遍历到A[n],找出最小的数跟A[1]交换,如此反复直到第n-1个数。最后只剩一个数,不用比较了。所以n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。2.算法分析时间复杂度:O(N^2)空间复杂度:O(1)稳定性:不稳定原创 2016-04-27 18:08:16 · 632 阅读 · 0 评论 -
【排序算法】希尔排序(java实现)
1.基本思想:希尔排序(Shell Sort)是插入排序的一种,是针对直接插入排序算法的改进。该方法又称缩小增量排序.(1)选取一个小于n的整数d1作为第一个增量,把序列的全部元素分成d1个组。 所有距离为d1的倍数的元素放在同一个组中,在各组内进行直接插人排序。(2)选取第二个增量d2(3)重复(2)步骤,直至所取的增量dx=1,整个数据合成为一组,构成一组有序记录,则原创 2016-04-28 20:37:39 · 567 阅读 · 0 评论 -
【排序算法】基数排序(java实现)
1.基本思想它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。不需要比较关键字的大小。2.算法分析时间复杂度:O(dn) (d即表示整形的最高位数)空间复杂度:O(10n) (10表示0~9,用于存储临时的序列)稳定性:稳定 3.算法实现:3.算法优化:原创 2016-04-29 15:32:49 · 583 阅读 · 0 评论 -
【排序算法】直接插入排序(java实现)
1.基本思想:在排序算法中算是一种非常简单直观的排序算法。将第一个元素作为已排好的序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。2.算法分析:时间复杂度:O(N^2)空间复杂度:O(1)稳定性: 稳定3.算法实现: //直接插入 public static int[] InsertSort(int[] array){ for (原创 2016-04-28 16:25:09 · 637 阅读 · 0 评论 -
【排序算法】快速排序(java实现)
1.基本思想:它采用了一种分治的策略,通常称为分治法。分治法思想:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。对于数组A, 随机选择一个元素作为基准数pos,一般为第一个元素或最后一个元素。将该数组分为两堆A[0,pos_index-1] 和 A[pos_index+1,n],一堆元素全都小于pos ,另一原创 2016-04-27 20:15:00 · 543 阅读 · 0 评论
分享