数据结构
无球啊水
个人学习笔记
展开
-
归并排序
public class MergeSort { public int[] mergeSort(int[] A, int n) { sort(A,0,n-1); return A; } public void sort(int[] data,int left,int right){ if(left<right){原创 2016-10-16 21:13:57 · 246 阅读 · 0 评论 -
快速排序
快速排序是对冒泡排序的一种改进,它是通过一趟排序把数组分成比关键字大的和小的两部分,然后再分别对这两部分再进行这种操作,一直到只有一个关键字不能再分为止。其平均时间复杂度是O(NLOGN),但最坏情况也有O(N*N),所以不太稳定。public class QuickSort { public static int[] quickSort(int[] A, int n) { quick(原创 2016-10-16 22:22:26 · 288 阅读 · 0 评论 -
堆排序
堆排序是简单选择排序的一种优化,其时间复杂度为O(NLOGN)。堆排序分为建堆过程和排序过程。建堆就是建立一个大根堆(所有非终端节点的值都大于其左右节点的值)或者是小根堆。然后排序就是将堆顶元素和最后一个元素交换,并输出堆顶元素。public class HeapSort { public int[] heapSort(int[] A, int n) { //1,建立大原创 2016-10-18 16:34:07 · 234 阅读 · 0 评论 -
希尔排序
希尔排序是直接插入排序的一种优化,他的基本思想是:先将整个待排序列分成若干子序列进行插入排序,待整个序列基本有序时再对全体记录进行一次直接插入排序。其时间复杂度和它的增量有关。 public static void ShellSort(int [] x){ int h=1; while(h<x.length/3) h=h*3+1;原创 2016-10-18 16:51:29 · 217 阅读 · 0 评论