Problem: 912. 排序数组
思路
👨🏫 三叶题解
💖 AC:计数排序
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
class Solution {
    public int[] sortArray(int[] nums) {
        int max = -50001, min = 50001;
        for (int num: nums) {
            max = Math.max(num, max);
            min = Math.min(num, min);
        }
        int[] counter = new int[max - min + 1];
        for (int num: nums) {
            counter[num - min]++;
        }
        int idx = 0;
        for (int num = min; num <= max; num++) {
            int cnt = counter[num - min];
            while (cnt-- > 0) {
                nums[idx++] = num;
            }
        }
        return nums;
    }
}
💖 TLE:快速排序板子
⏰ 理想时间复杂度:  
     
      
       
       
         O 
        
       
         ( 
        
       
         N 
        
       
         l 
        
       
         o 
        
       
         g 
        
       
         N 
        
       
         ) 
        
       
      
        O(NlogN) 
       
      
    O(NlogN)
 🌎 空间复杂度:  
     
      
       
       
         O 
        
       
         ( 
        
       
         1 
        
       
         ) 
        
       
      
        O(1) 
       
      
    O(1)
😶 被卡最坏的情况啦!
 😶 原数组有序的情况下,选第一个数为标准值,所有数都会被分到另一边去
 ⏰  
     
      
       
       
         O 
        
       
         ( 
        
        
        
          n 
         
        
          2 
         
        
       
         ) 
        
       
      
        O(n^2) 
       
      
    O(n2)
class Solution {
    public int[] sortArray(int[] nums) {
        quickSort(nums,0,nums.length-1);
        return nums;
    }
    public void quickSort(int[] a,int left,int right){
        if(left < right){
            int x = a[left];
            int l = left;
            int r = right;
            while(l < r ){
                while(l < r && a[r] >= x )//先找右边小于标准值的数放在左边的位置(标准值也是在左边)
                    r--;
                a[l] = a[r];
                while(l < r && a[l] <= x)// 再找左边大于标准值的数放在右边
                    l++;
                a[r] = a[l];
            }
            a[l] = x;
            quickSort(a,left,l);
            quickSort(a,l+1,right);
        }
    }
}




















