手撕快排

public void QuickSort{

        public void sort(int [] nums){

                shuff(nums);

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

        }

        private void sort(int [] nums,int l,int h){

                if(l>=h)  return ;

                int j =partition (nums, l , h);

                sort(nums,l,j-1);

                sort(nums,j+1,h);

        }

        private int partition(int [] nums,int l ,int h){

                int i=l,   j=h+1;

                while(true){

                        while(i<h && nums[i++]< nums[l]);

                        while(j>l &&  nums[j--] >nums[l]);

                        if(i>=j)  break;

                        swap(nums,i,j);

                }

                swap(nums,l,j)

                return j;

        }

        private void shuff(int [] nums){

                List<Comparable> list =Arrays.asList(nums);

                Collections.shuff(list);

                list.toArray(nums);

        }

        private void swap(int [] nums,int i,int j){

                int t=nums[i];

                nums[i]=nums[j];

                nums[j] =t;

        }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容