讨论/《排序算法全解析》 - 912. 排序数组/
《排序算法全解析》 - 912. 排序数组
共 8 个回复

hhhhhhhhh

class Solution {
    public int[] sortArray(int[] nums) {
        Arrays.sort(nums);
        return nums;
    }
}

快速排序也超时了啊

小机灵鬼

  1. 贴代码的时候最好用```包起来...
  2. 因为用加法的这种方式,可能遇到数字很大越界,因此最好还是用异或

既然超时了,就不能怪我了。

class Solution {
public:
    vector<int> sortArray(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        // 选择排序超时了....
        // for (int i = 0; i < nums.size() - 1; i++) {
        //     int minIndex = i;
        //     for (int j = i + 1; j < nums.size(); j++) {
        //         if (nums[j] < nums[minIndex]) {
        //             minIndex = j;
        //         }
        //     }

        //     swap(nums[minIndex], nums[i]);
        // }
        return nums;
    }
};

//看的答案才会的,数交换时为什么直接用和不行,而必须要temp

class Solution {
    public int[] sortArray(int[] nums) {
        xuanze(nums);
        return nums;
    }
    public static void xuanze(int arr[]){
        int min_index,temp;
        for(int i=0;i<arr.length-1;i++){
           min_index = i;
            for(int j = i+1;j<arr.length;j++){
                if(arr[min_index]>arr[j]){
                    min_index = j;
                }           
            }
            temp= arr[i]+arr[min_index];
            arr[min_index] = temp-arr[min_index];
            arr[i] = temp - arr[min_index];
        }
    }
}

C++ 选择排序完美超时

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