编程之久除了算法和数据结构,什么也不属于我们。

来源:互联网 发布:在线聊天室网页源码 编辑:程序博客网 时间:2024/04/27 18:54

刚打开CSDN就看到這个,明显触动的心,最近正好刚开始学算法,也决定打算开始写博客,写自己的学习笔记,学习过程,学习经历。希望自己不好太懒,能每天坚持写一篇,实在累不想写就转发个好的文章。

学了一星期的算法,正在看算法—第四版,看到了第3章—查找,不知道自己看得会不会太快,我也没怎么看后面的习题,看一俩道這样,实现的话,有些有实现,但是我都是会时不时去默写。

今天就总结下排序吧!

java实现

//选择排序public class Selection{public static void sort(Comparable[] a){int N = a.length;for(int i=0;i<N;i++){int min = i;for(int j=i+1; j<N;j++)if(less(a[j] ,a[min])) min=j;exch(a,i,min);}}}


//插入排序public class Insertion{public static void sort(Comparable[] a){int N = a.length;for(int i=1;i<N;i++){for(int j=i;j>0&& less(a[j],a[j-1]);j--)exch(a,j,j-1);}}}



</pre><pre>
//希尔算法public class Shell{public static void sort(Comparable[] a){int N=a.length;int h =1;while(h<N/3) h = 3*h+1;while(h>=1){for(int i= h;i<N;i++){for(int j =i;j>=h&&less(a[j],a[j-1];) j -=h)exch(a,j,j-h);}h=h/3;}}}



//原地归并算法public static void merge(Comparable[] a , int lo, int mid ,int hi){int i=lo; int j =mid+1;for(int k=lo;k<=hi;k++)aux[k]=a[k];for(int k=lo;k<=hi;K++)if (i > mid )a[k]=aux[j++]else if (j>hi)a[k]=aux[i++]else if (less(aux[j],aux[i]))a[k]=aux[j++]else a[k]=aux[i++]}public class Merge{private static Comparable[] aux;public static void sort(Comparable[] a){axu = new Comparable[a.length];sort(a, 0 , a.length -1);}private static void sort(Comparable[] a,int lo, int hi){if(hi <= lo) return;int mid = lo +(hi-lo)/2;sort(a , lo , mid);sort(a,mid+1,hi);merge(a, lo,mid,hi);}}



3 0
原创粉丝点击