IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣912.排序数组(十大排序算法走一遍101℃)=十大模板 -> 正文阅读

[数据结构与算法]力扣912.排序数组(十大排序算法走一遍101℃)=十大模板

力扣912.排序数组
给你一个整数数组 nums,请你将该数组升序排列。

示例一:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]

示例二:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

提示:

1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000

解法一:STL,sort直接排

class Solution {
public:
    vector<int> sortArray(vector<int>& nums) {
    sort(nums.begin(),nums.end());
    return nums;
    }
};

在这里插入图片描述

解法二:选择排序

class Solution {
public:
void choosesort(vector<int>&nums){
    for(int i=0;i<nums.size();i++){
        for(int j=i+1;j<nums.size();j++)
           if(nums[j]<nums[i])swap(nums[j],nums[i]);
    }
}
    vector<int> sortArray(vector<int>& nums) {
    choosesort(nums);
    return nums;
    }
};

在这里插入图片描述

解法三:冒泡排序

class Solution {
public:
void bubblesort(vector<int>&nums){
    for(int i=0;i<nums.size()-1;i++){
        for(int j=0;j<nums.size()-i-1;j++){
            if(nums[j]>nums[j+1])swap(nums[j],nums[j+1]);
        }
    }
}
    vector<int> sortArray(vector<int>& nums) {
    bubblesort(nums);
    return nums;
    }
};

在这里插入图片描述

解法三:插入排序

class Solution {
public:
void insertsort(vector<int>&nums){
    for(int i=1;i<nums.size();i++){
        int tmp=nums[i];
        int j;
        for(j=i-1;j>=0;j--){
            if(nums[j]>tmp)nums[j+1]=nums[j];
            else break;
        }
        nums[j+1]=tmp;
    }
}
    vector<int> sortArray(vector<int>& nums) {
    insertsort(nums);
    return nums;
    }
};

在这里插入图片描述

解法四:快速排序

class Solution {
public:
void qssort(vector<int>&nums,int l,int r){
   int i=l,j=r,flag=nums[l+(r-l)/2];
   do{
       while(nums[i]<flag)i++;
       while(nums[j]>flag)j--;
       if(i<=j){
           swap(nums[i],nums[j]);
           i++;
           j--;
       }
   }while(i<=j);
   if(l<j)qssort(nums,l,j);
   if(i<r)qssort(nums,i,r);
}
    vector<int> sortArray(vector<int>& nums) {
    int n=nums.size();
    qssort(nums,0,n-1);
    return nums;
    }
};

快排还是很强的
在这里插入图片描述

解法五:希尔排序

class Solution {
public:
 void shellsort(vector<int>& nums) {
    int n=nums.size();
    for(int inc=n/2;inc>=1;inc/=2){
        for(int k=0;k<=inc-1;k++){
            for(int j=k+inc;j<n;j+=inc){
                int i=j-inc;
                int tmp=nums[j];
                while(i>=k&&nums[i]>tmp){
                    nums[i+inc]=nums[i];
                    i-=inc;
                }
                nums[i+inc]=tmp;
            }
        }
    }
} 
vector<int> sortArray(vector<int>& nums) {
    int n=nums.size();
    shellsort(nums);
    return nums;
    }
};

在这里插入图片描述

解法六:归并排序

class Solution {
public:
void mergesort(vector<int>&nums,int beg,int end){
        if(beg>=end)return;
        int mid=beg+(end-beg)/2;
        mergesort(nums,beg,mid);
        mergesort(nums,mid+1,end);
        vector<int>nums2(nums.begin()+mid+1,nums.begin()+end+1);
        merge(nums,beg,mid,end,nums2,end-mid);
    }
void merge(vector<int>&nums1,int beg,int mid,int end,vector<int>&nums2,int n){
        int right=end+1,cur1=mid,cur2=n-1;
        while(1){
            if(cur1==beg-1&&cur2==-1)return ;
            else if(cur1==beg-1&&cur2!=-1){
                right--;
                nums1[right]=nums2[cur2];
                cur2--;
            }
            else if(cur1!=beg-1&&cur2==-1)return ;
            else if(nums1[cur1]>=nums2[cur2]){
                right--;
                nums1[right]=nums1[cur1];
                cur1--;
            }
            else if(nums1[cur1]<nums2[cur2]){
                right--;
                nums1[right]=nums2[cur2];
                cur2--;
            }
        }
    }
vector<int> sortArray(vector<int>& nums) {
    int n=nums.size();
    mergesort(nums,0,n-1);
    return nums;
    }
};

在这里插入图片描述

解法七:堆排序

解法八:计数排序

解法九:基数排序

解法十:桶排序

解法:十一:我先休息一下<(_ _)>

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:06:11  更:2021-11-26 09:07:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 15:38:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码