快速排序
2015-05-11 16:48
141 查看
[code] 快速排序法 快速排序中体现的思想有分治法.
从小到大排序
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
[code] 1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。 2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。 3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。 4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。
[code]public static void fastSort(int[] array,int start,int end){ //初始化参数 int i=start; int j=end; /* i<j 表示值得去排序 */ if(i<j){ //选定开始的元素作为第一个坑 int base=array[i]; while(i<j){ //从右向左的查找 while(i<j&&(array[j]>=base)){ j--; } if(i<j){ //如果存在,则填坑,并且产生新坑j array[i]=array[j]; i++; } //从左向右的查找 while(i<j&&(array[i]<base)){ i++; } if(i<j){ //如果存在,则填坑,并且产生新坑i array[j]=array[i]; j--; } } array[i]=base; //分治法 fastSort(array,start,i-1); fastSort(array,i+1,end); }
相关文章推荐