快速排序算法代码

实现思路:

1.定义一个基准数(pivot),将<=pivot的元素都放在pivot的左边,将>=pivot的元素都放在pivot的右边

2.找到pivot的值所在位置的索引

3.再对pivot左边的元素和右边的元素递归进行排序 

public class QuickSort {
    public static void main(String[] args) {

        int[] arr = new int[1000];
        Random random = new Random();
        for (int i = 0; i <1000; i++) {
            arr[i]=random.nextInt(1000);
        }
        quicksort(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }
    public static void quicksort(int[] arr,int left,int right){
        if(left>=right) return; //排序数组需要两个及两个以上的元素
            //计算出基准数的索引位置
            int index = partition(arr, left, right);
            //排序基准数左边的元素
            quicksort(arr,0,index-1);
            //排序基准数右边的元素
            quicksort(arr,index+1,right);
    }
    public static int partition(int[] arr,int left,int right){
        int pivot = arr[right];//定义基准数
        int i = left;//定义左指针
        int j = right-1;//定义右指针
        while (i<=j){
            while (i <= j && arr[i]<=pivot) i++;//从左开始寻找
            while (i <= j && arr[j]>=pivot) j--;//从右开始寻找
            if (i<j) swap(arr,i,j);//交换左右指针指向的位置
        }
        swap(arr,i,right);//交换基准数和左指针指向位置的数
        return i;
    }

    /**
     * 数组元素交换的方法
     * @param arr   交换元素的数组
     * @param i     交换元素的索引
     * @param j     交换元素的索引
     */
    public static void swap(int[] arr,int i,int j){
        int tmp=0;
        tmp=arr[i];
        arr[i]=arr[j];
        arr[j]=tmp;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C语言中的快速排序算法代码: ```c void swap(int *arr, int i, int j) { int temp = arr[i]; arr[i = arr[j]; arr[j = temp; } int quick(int *arr, int leftbound, int rightbound) { int leftptr = leftbound + 1; int rightptr = rightbound; int pivot = arr[leftbound]; while (leftptr <= rightptr) { while (leftptr <= rightptr && arr[leftptr < pivot) { leftptr++; } while (leftptr <= rightptr && arr[rightptr >= pivot) { rightptr--; } if (leftptr < rightptr) { swap(arr, leftptr, rightptr); } } swap(arr, leftbound, rightptr); return rightptr; } void quick_sort(int *arr, int left, int right) { if (right <= left) { return; } int mid = quick(arr, left, right); quick_sort(arr, left, mid-1); quick_sort(arr, mid+1, right); } ``` 以上代码实现了C语言中的快速排序算法快速排序算法的基本思想是通过选取一个基准值,将数组分为两个子数组,然后对子数组进行递归排序操作。排序过程中会不断地交换元素位置,使得基准值左侧的元素小于等于基准值,右侧的元素大于等于基准值。最终,整个数组将被排序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C++实现快速排序,最简单的代码(详细解读)](https://blog.csdn.net/nbu_dahe/article/details/119008668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值