常用算法之快速排序---笔记

来源:互联网 发布:快易数据恢复大师 编辑:程序博客网 时间:2024/05/16 01:02

算法过程描述:

1、在数组中,选择其中一个作为“基数”;

2、所有小于“基数”的都移到“基数”左边,所有大于“基数”的数据都移到“基数”右边;

3、对于“基数”左右两个子集,分别重复1、2步骤,直到所有子集剩下一个数据为止,排序完成;


 public class QuickSortTest{

              public   static void sort(int[] array, int  low, int  high){

                      if(low>high){

                            return;

                      }

                      int i=low,j=high;

                      int index = array[i];

                      while(i<j){

                            while(i<j && array[j] >=index){

                                     j--;

                            }

                            if(i<j){

                                      array[i]=array[j];

                                      i++;

                             }

                            while(i<j && array[i]<index){

                                     i++;

                            }

                            if(i<j){

                                    array[j]=array[i];

                                     j--;

                           }

                      }

                      array[i]=index;

                      sort(array,low,i-1);

                      sort(array,i+1,high);

             }


            public static void main(String[] args){

                   int a[]={2,9,0,8,7,1,5,4,3,6};

                   sort(a,0,a.length-1);

                    for(int i=0;i<a.length;i++){

                           System.out.print(a[i]+"  ");

                     }

             }

}

0 0