快速排序

来源:互联网 发布:收费网站源码 编辑:程序博客网 时间:2024/06/01 22:31

最坏时间复杂度O(n^2),最佳时间复杂度O(nlog2n),空间复杂度O(log2n)~O(n),不稳定

package suanfa;public class kuaisu {       public void kuaisu(int a[],int left,int right){        if(left>right){            return;        }        int temp;        int i=left;        int j=right;        temp=a[left];       while(i!=j){//比较时一定要加上=号,否则结果会出现偏差           while((i<j)&&(a[j]>=temp)) j--;//当右边的数都大于基准数,j向左移动;否则退出循环           while((i<j)&&(a[i]<=temp)) i++;//当左边的数都小于基准数,i向右移动;否则退出循环           if(i<j){//退出循环后判断i是否小于j,则互换位置;               int cap;               cap=a[j];               a[j]=a[i];               a[i]=cap;           }       }//当i=j时跳出循环;交换基位位置;       int cap;       cap=a[i];       a[left]=cap;       a[i]=temp;       //进行下一次迭代;       kuaisu(a,left,i-1);//左边迭代;       kuaisu(a,j+1,right);//右边迭代;       }}
原创粉丝点击