排序

1.冒泡排序

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    vector<int> MySort(vector<int>& arr) {
        // write code here
        if (arr.size()<=1) {
            return arr;
        }
        for (int i=arr.size(); i>0; i--) {
            for (int j=0; j<i-1; j++) {
                if (arr[j]>arr[j+1]) {
                    swap(arr[j],arr[j+1]);
                }
            }
        }
        return arr;
    }

    void swap(int&a,int&b){
        int tmp;
        tmp=a;
        a=b;
        b=tmp;
    }
};

2.快速排序

#include <vector>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    vector<int> MySort(vector<int>& arr) {
        // write code here
        if (arr.size() <= 1) {
            return arr;
        }
        quicksort(arr, 0, arr.size() - 1);
        return arr;
    }

    void quicksort(vector<int>& vec, int left, int right) {
        if (left >= right) {
            return;
        }
        int temp = vec[left]; //基准数
        int i = left, j = right;
        while (i < j) {
            while (vec[j] >= temp&&i<j) {
                j--;
            }
            while (vec[i] <= temp&&i<j) {
                i++;
            }
            if (i < j) {
                swap(vec[i], vec[j]);
            }
        }
        vec[left] = vec[i];
        vec[i] = temp;
        quicksort(vec, left, i - 1);
        quicksort(vec, i + 1, right);
        return;
    }

    void swap(int& a, int& b) {
        int tmp;
        tmp = a;
        a = b;
        b = tmp;
    }
};

全部评论
我看了很多面经,而且也面试过不少次,发现排序是高频问题
点赞 回复 分享
发布于 2023-04-09 10:09 山东
这道题在哪可以找到,我也想试着自己做一下
点赞 回复 分享
发布于 2023-04-09 09:09 山东

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务