CodeTop day3

class Solution {
    public int[] sortArray(int[] nums) {
        //这种方法超时【快速排序】
        for (int i=0;i<nums.length-1;i++){
            int minIndex = i;//假设当前开始下标为最小元素下标
            for (int j=i+1;j<nums.length;j++){
                //从i到nums。length-1区间里找到最小值下标
                if (nums[j]<nums[minIndex]) minIndex = j;
            }
            //交换i和真正的minIndex元素
            int temp = nums[i];
            nums[i] = nums[minIndex];
            nums[minIndex] = temp;
        }
        return nums;
    }
}
class Solution {
    public int[] sortArray(int[] nums) {
        //插入排序,但是效率比较低
        for (int i=1;i<nums.length;i++){
            int temp = nums[i];
            int tempIndex = i;
            //如过当前下标之前的元素大于当前值,则之前的元素后移,插入当前元素
            while(tempIndex>0 && nums[tempIndex-1]>temp){
                nums[tempIndex] = nums[tempIndex-1];
                tempIndex--;
            }
            nums[tempIndex] = temp;
        }
        return nums;
    }
}
class Solution {
    public int[] sortArray(int[] nums) {
        quickSort(nums,0,nums.length-1);
        return nums;

    }
    private void quickSort(int[] nums, int left, int right){
       //测试用例通过了,但是耗时太长,不应该选择最左边,应该随机选择
        if (right==left) return;
        //pivot[左边放小的,右边放大的,左右指标相等时放pivot]
        //int pIndex = rand(right-left+1) + left;
        int pivot = nums[left];
        int l = left;
        int r = right;
        while(l<r){

            //先看右边
            while(l<r && nums[r]>=pivot) r--;
            if (l<r && nums[r]<pivot){
                nums[l] = nums[r]; 
                l++;
            }
            //再看左边
            while(l<r && nums[l]<=pivot) l++;
            if (l<r && nums[l]>pivot){
                nums[r] = nums[l];
                r--;
            }
            if (l==r){
                nums[l] = pivot;
                break;
            }
        }
        if (left<l){
            quickSort(nums,left,l-1);
        }
        if (right>l){
            quickSort(nums,l+1,right);
        }
        
    }

}
class Solution {
    public int[] sortArray(int[] nums) {
        quickSort(nums,0,nums.length-1);
        return nums;

    }
    private void quickSort(int[] nums, int left, int right){
        if (right==left) return;
        //pivot[左边放小的,右边放大的,左右指标相等时放pivot]
        int pIndex = (right+left)/2;
        int pivot = nums[pIndex];
        int l = left;
        int r = right;
       do{
            //先看右边
            while(nums[r]>pivot) r--;
            //再看左边
            while(nums[l]<pivot) l++;
            //这是存在左右都不满足条件
            //交换两个元素位置
            if (l<=r){
                int temp = nums[r];
                nums[r] = nums[l];
                nums[l] = temp;
                l++;
                r--;
            }
        }while(l<=r);
        
            if (left<r) quickSort(nums,left,r);
            
            if (right>l) quickSort(nums,l,right);
    }

}

相关推荐

  1. 3.11笔记3

    2024-03-17 07:56:01       37 阅读
  2. 3.3 语法规则

    2024-03-17 07:56:01       46 阅读
  3. <span style='color:red;'>3</span>-Mybatis

    3-Mybatis

    2024-03-17 07:56:01      59 阅读
  4. vue 3

    2024-03-17 07:56:01       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-17 07:56:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-17 07:56:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-17 07:56:01       82 阅读
  4. Python语言-面向对象

    2024-03-17 07:56:01       91 阅读

热门阅读

  1. 对LitJson开源插件的自定义尝试

    2024-03-17 07:56:01       46 阅读
  2. C#实现约瑟夫环算法

    2024-03-17 07:56:01       45 阅读
  3. Educational Codeforces Round 163 (Rated for Div. 2) (A~C)

    2024-03-17 07:56:01       44 阅读
  4. 如何保持简单轻量的架构

    2024-03-17 07:56:01       41 阅读
  5. 前端 网络相关事件 交互

    2024-03-17 07:56:01       42 阅读
  6. Python中元组的高效使用

    2024-03-17 07:56:01       48 阅读
  7. 图像描述(image caption)模型简单demo(源码理解原理)

    2024-03-17 07:56:01       40 阅读
  8. 第五章 Collections

    2024-03-17 07:56:01       38 阅读
  9. vue3之带参数的动态路由

    2024-03-17 07:56:01       45 阅读
  10. Flutter中GetX的用法(路由管理)

    2024-03-17 07:56:01       37 阅读
  11. Flutter 的 switch 语句补遗

    2024-03-17 07:56:01       41 阅读
  12. ctf-web23

    ctf-web23

    2024-03-17 07:56:01      43 阅读