概述
给你一个整数数组 nums,请你将该数组升序排列。
示例 1:
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
主要考察的是排序算法的基本功,这里只给出个人比较熟悉的算法,其他的请自行查找相关资料
class Solution {
public int[] sortArray(int[] nums) {
//快速排序
// quickSort(nums,0,nums.length-1);
//选择排序
// selectSort(nums);
//冒泡
bubbleSort(nums);
return nums;
}
private void quickSort(int[] nums,int low,int high){
if(low<high){
int index = getIndex(nums,low,high);
quickSort(nums,low,index-1);
quickSort(nums,index+1,high);
}
}
private int getIndex(int[] nums,int low,int high){
//左端作为基准
int tem = nums[low];
while(low<high){
//队尾元素大于等于基准,队尾向前移动
while(low<high&&nums[high]>=tem){
high--;
}
//队尾元素小于基准,将队尾元素赋值给low
nums[low] = nums[high];
//队首元素小于等于基准,队首向后移动
while(low<high&&nums[low]<=tem){
low++;
}
//当队首元素大于基准,将其赋值给high
nums[high] = nums[low];
}
nums[low] = tem;
return low;
}
//选择排序
private void selectSort(int[] nums){
for(int i=0;i<nums.length-1;i++){
int minValueIndex = i;
for(int j=i;j<nums.length;j++){
if(nums[j]<nums[minValueIndex]){
minValueIndex = j;
}
}
//将最小的元素和i位置元素互换
int tem = nums[i];
nums[i] = nums[minValueIndex];
nums[minValueIndex]=tem;
}
}
//冒泡
private void bubbleSort(int[] nums){
int len = nums.length;
for(int i=0;i<len-1;i++){
for(int j=0;j<len-i-1;j++){
if(nums[j]>nums[j+1]){
int tem = nums[j];
nums[j]=nums[j+1];
nums[j+1]=tem;
}
}
}
}
}
最后
以上就是儒雅钢笔为你收集整理的leetcode解题之排序数组的全部内容,希望文章能够帮你解决leetcode解题之排序数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复