- 博客(9)
- 收藏
- 关注
原创 归并排序非递归 java实现
package sort;/*归并排序非递归实现 与递归实现稍有不同,不需要先拆分递归,再归并退出递归 * 由于k不能为零,所以数组中第零个位置用来过度,并没有用到 */public class MergeSort2 {public static int[] mergesort(int nums[]){int k=1;while(k{mergepass(
2017-04-01 13:53:05 556
原创 归并排序递归 java实现
package sort;public class MergeSort1 { /*** 归并排序 * 简介:将两个(或两个以上)有序表合并成一个新的有序表 即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列 * 时间复杂度为O(nlogn) 稳定排序方式 */ public st
2017-04-01 13:52:27 527
原创 快速排序 java实现
package sort;/*快速排序 通过一趟排序将待排序记录分割成独立的两部分,其中一部分的关键字均小于另一部分,分别对两部分继续排序,以达到整个序列有序的目的 * 次算法是优化过的快速排序算法 * 快速排序适用于元素比较多的排序,元素少时不如基本排序效率高 * 时间复杂度 O(log n) */public class QuickSort {pub
2017-04-01 13:50:53 305
原创 堆排序 java实现
package sort;/*堆排序 * 构建堆的时间复杂度为哦O(n) * 第i次取堆顶记录重建需要用O(log i)的时间,需要n-1次堆顶记录,因此时间复杂度为O(nlog n) * 适合待排序序列元素较多的情况 */public class HeapSort {public static void main(String[] args) {//
2017-04-01 13:50:10 386 1
原创 基数排序 java实现
package sort;//基数排序:稳定排序public class RadixSort {// d为数据长度,根据数据长度排几次序private static int[] radixSorting(int[] arr, int d) {for (int i = 0; i arr = countingSort(arr, i); // 依次对各位数字排序(直接用计
2017-04-01 13:48:07 292
原创 希尔排序 java实现
package sort;/*希尔排序 跳跃分割,先基本有序,再通过直接插入排序使序列有序 * 与直接插入排序一样,需要一个额外的缓存空间 *复杂度分析 o(n^(3/2)) */ public class ShellSort {public static void main(String[] args) {// TODO 自动生成的方法存根int a
2017-04-01 13:46:45 259
原创 直接插入排序 java实现
package sort;///直接插入排序 将一个记录插入到已经排好序的序列表中,得到一个新的、记录加一的序列表///需要设置一个额外的数组空间临时存储///时间复杂度 最好比较n-1次,最坏比较2+3+...+n=(n+2)(n-1)/2次,移动3+4+...+n+1=(n+4)(n-1)/2 总共为o(n^2),优于冒泡和选择public class InsertSo
2017-04-01 13:45:50 207
原创 选择排序 java实现
package sort;///简单选择排序:通过n-i次比较关键字,从n-i+1个记录中选出关键字最小的记录,和第i(1///复杂度分析 比较n(n-1)/2次,最好情况交换0次,最坏情况交换n-1次。总时间复杂度为 比较次数+交换次数 o(n^2),由于冒泡排序public class SelectSort {public static void main(Str
2017-04-01 13:44:28 204
原创 冒泡排序 java实现
package sort;///冒泡排序 两两比较相邻记录的关键字,反序就交换,直到没有反序的为止;////复杂度分析 最好情况时间复杂度为o(n),最坏为o(n^2)public class BubbleSort {public static void main(String[] args) {// TODO 自动生成的方法存根int []a={7,6,4,
2017-04-01 13:41:28 211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人