NC 排序
系列文章目录
文章目录
- 系列文章目录
- 前言
前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
描述
给定一个长度为 n 的数组,请你编写一个函数,返回该数组按升序排序后的结果。
注:本题数据范围允许绝大部分排序算法,请尝试多种排序算法的实现。
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[] list, int left, int right) {if (left < right) {// 分割数组,找到分割点int point = partition(list, left, right);// 递归调用,对左子数组进行快速排序quickSort(list, left, point - 1);// 递归调用,对右子数组进行快速排序quickSort(list, point + 1, right);}}/*** 分割数组,找到分割点*/public int partition(int[] list, int left, int right) {// 用数组的第一个元素作为基准数int first = list[left];while (left < right) {while (left < right && list[right] >= first) {right--;}// 交换swap(list, left, right);while (left < right && list[left] <= first) {left++;}// 交换swap(list, left, right);}// 返回分割点所在的位置return left;}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}