leetcode--912--排序数组

题目:
给你一个整数数组 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

链接:https://leetcode-cn.com/problems/sort-an-array

思路:
1、常规的排序算法。
2、这里整理了常见的排序算法

C++代码:

class Solution {
public:
    vector sortArray(vector& nums) {
        int n = nums.size();
        QuickSort(nums,0,n-1, n);
        return nums;
    }
    //插入
    void InsertSort(vector& nums,int n) {
        for(int i=0;i= 0 && nums[j] >temp) {
                nums[j+1] = nums[j];
                j--;
            }
            nums[j+1] = temp;
        }
    }
    //折半插入
    void HInsertSort(vector& nums,int n) {
        int i,j,low,high,mid;
        for( i=0;i tmp){
                    high = mid - 1;
                }else{
                    low = mid + 1;
                }
            }
            for(j=i-1;j>=high+1;j--){
                nums[j+1] = nums[j];
            }
            nums[high+1] = tmp;
        }
    }
    //希尔
    void ShellSort(vector& nums,int n){
        for(int dk = n/2;dk>=1;dk=dk/2){
            for(int i=dk;i=0&&tmp& nums,int n){
        for(int i=0;ii;j--) {
                if(nums[j-1]>nums[j]){
                    swap(nums[j-1],nums[j]);
                    flag = true;
                }
            }
            if(flag == false){
                return ;
            }
        }
    }
    //快排
    void QuickSort(vector& nums,int low,int high,int n){
        
        if(low& nums,int low,int high){
        int pivot = nums[low];
        while(low=pivot)--high;
            nums[low] = nums[high];
            while(low& nums,int n) {
        for(int i=0;i &nums, int len, int index){
        int left = 2*index + 1; // index的左子节点
        int right = 2*index + 2;// index的右子节点

        int maxIdx = index;
        if(left nums[maxIdx])     maxIdx = left;
        if(right nums[maxIdx])     maxIdx = right;
 
    if(maxIdx != index)
    {
        swap(nums[maxIdx], nums[index]);
        adjust(nums, len, maxIdx);
    }
 
}
 
// 堆排序
    void HeapSort(vector &nums, int size){
       for(int i=size/2 - 1; i >= 0; i--){
            adjust(nums, size, i);
        }
         for(int i = size - 1; i >= 1; i--){
                swap(nums[0], nums[i]);        
                adjust(nums, i, 0);              
            }
        }
};

你可能感兴趣的:(leetcode--912--排序数组)