【每日一题】【快速排序过程、循环过程无=、递归参数】2022年1月16日-NC140 排序
快速排序
对时间复杂度和空间复杂度有要求
方法1:快速排序-递归
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * @param arr int整型一维数组 待排序的数组 * @return int整型一维数组 */ public int[] MySort (int[] arr) { quickSort(arr, 0, arr.length - 1); return arr; } public void quickSort(int[] arr, int low, int high) { if(low >= high) { return; } //枢纽元素的名字叫pivot int pivot = arr[low]; int i = low, j = high; while(i < j) { //注意循环体,是先从右往左找 while(i < j && arr[j] > pivot) { j--; } if(i < j) { arr[i++] = arr[j]; } //再从左往右找 while(i < j && arr[i] < pivot) { i++; } if(i < j) { arr[j--] = arr[i]; } } //最后的位置才放入枢纽元素 arr[i] = pivot; //注意递归的下标从哪里到哪里 quickSort(arr, low, i - 1); quickSort(arr, i + 1, high); } }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15810339.html