随笔分类 - 数据结构与算法
摘要:快速排序算法有几种种优化方式:基准点的选择,减去不必要的交换位置,优化小数组时的优化,递归的优化(在数组长度很短,用直接插入算法就行了) 时间复杂度(nlog2n)public class QuickSort { public static void main(String[] args) { in
阅读全文
摘要:堆排序是对选择排序的改进(时间复杂度和希尔排序一样O(nlog2n)) 数据结构:完全二叉树(大顶堆,根节点都比左右节点大,小顶堆,根节点小于双亲节点) public class HeapSort { public static void main(String[] args) { int a[]=
阅读全文
摘要:希尔排序突破了O(n2),它的时间复杂度是O(nlog2n) 分组再排序 public insertSort(int a[],int n){ int i,j,temp; int gap=n;//间隔 do{ gap=gap/3+1; for(int i=gap;i<n-1;i++){ if(a[i]
阅读全文
摘要:向已经排好序的序列,插入一个元素 public insertSort(int a[],int n){ int i,j,temp; for(int i=1;i<n-1;i++){ if(a[i]<a[i-1]){ temp=a[i];//作为哨兵 for(j=i-1;k[j]>temp;j--){ k
阅读全文
摘要:选择排序:先不交换,先找到最小的,找到了再交换 public void selectSort(int a[],int n){ int i,j,temp,min;//min存放最小元素的位置 for(i=0;i<n;i++){ min=i; for(j=i+1;j<n;j++){ if(a[j]<a[
阅读全文
摘要:冒泡的排序是两两比较(相邻的元素),以下算法算不上冒泡排序 //a需要排序的数组,n数组长度 public void bubbleSort(int a[],int n){ int temp; for(int $i=0;$i<n-1;$i++) for(int j=i+1;j<n;j++){ if(a
阅读全文
摘要:对于知根知底的东西可以用递归,不到万不得已,不推荐使用递归。如文件夹的层数,可以使用递归 递归的效率很低的。递归是在操作栈(不断的出栈和进栈),这个比较耗资源。(汉诺塔问题就是使用递归,函数自己调用自己) >迭代:循环结构,递归:选择结构 >>斐波那契数列,打印前40位的数字 //迭代的实现 pub
阅读全文

浙公网安备 33010602011771号