算法和数据结构
文章平均质量分 75
lyyoung123
这个作者很懒,什么都没留下…
展开
-
快速排序
快速排序:快速排序的关键在于partition函数,partition分片确定基准元素的最终位置,然后对基准元素的左右分别进行快排。public void quickSort(int[] a){ if(a==null||a.length()<2) return; return quickSort(a,0,a.length()-1);}public void quickSor原创 2016-08-13 17:43:05 · 143 阅读 · 0 评论 -
基本排序
基本排序包括:冒泡排序、选择排序。其时间复杂度均为O(n*n)冒泡排序:每轮遍历,将最小的元素从后浮到最前面。为了防止在元素序列有序后还进行遍历,特地插入一个标志位。public void bubbleSort(int[] a){ if(a==null||a.length()<2) return a; boolean flag = true;//标志,如果一轮遍历没原创 2016-08-13 17:16:46 · 186 阅读 · 0 评论 -
归并排序
归并排序归并排序就是不断地将元素组分成两部分进行排序,然后进行归并。public class Merge{ int[] arr; public void mergeSort(int[] a){ if(a==null||a.length<2) return; arr = new arr[a.length]; sort(a,0,a.length(原创 2016-08-13 22:19:38 · 195 阅读 · 0 评论 -
堆排序
堆排序分为两部分来说:一是堆的实现、二是堆的排序堆的实现:public class MaxPQ{ private int[] pq; private int N = 0; public MaxPQ(int maxN){ pq = new int[maxN+1]; } public boolean isEmpty(){ return原创 2016-08-14 16:06:24 · 179 阅读 · 0 评论 -
查找--二分查找
二分查找二分查找主要是针对有序序列(部分有序序列)的元素进行查找public int bin_search(int a[],int key){ if(a==null||a.length<2) return a; int lo = 0; int hi = a.length-1; while(lo<=hi){ int mid = lo+(hi-lo)/2;原创 2016-08-14 16:19:24 · 320 阅读 · 0 评论 -
查找--子字符串查找
子字符串查找子字符串查找的常见方法:暴力破解、sunday和KMP。1、暴力查找暴力查找就是用两个指针i,j分别指向字符串和子字符串,如果指针指向的字符相等则两指针右移;否则,指向字符串的指针i回到本次匹配的下一个位置,而指向匹配字符串的指针j回到匹配字符串的开头。public int search(String text,String pattern){ if(text==原创 2016-08-14 17:57:08 · 638 阅读 · 0 评论