九大排序算法之快速排序

快速排序是对冒泡排序的改进
原理:在n个待排序的元素中,取一个轴点,经过一趟排序之后,把比较小的元素全部排到轴点的前面,比较大的元素全部排到轴点的后面,结果将待排序元素分成两个子表,最后将轴点放置在分解出,分别对其左右子表重复之前过程,直至每个子表只有一个记录时排序完成。

public class QuickSort{
    public static void quickSort(int[] arr, int left, int right){
        //  划分
        int mid =  partion(arr, left, right);
        // 左队列排序
        quickSort(arr, 0, mid - 1);
        // 右队列排序
        quickSort(arr, mid - 1, right);
    }
    public void swap(int [] arr, int i, int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    public void partion(int[] arr, int left, int right){
        // 轴值默认选取数组的第一个数组
        while(left < right){
            while(left < right && arr[left] <= arr[right]){
                right--;
            }
            if(left < right){
                 swap(arr, left, right);
            }
            while(left < right && arr[left] <= arr[right]){
                left++;
            }
            if(left < right){
                 swap(arr, left, right);
            }
        }
        return left;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容