O(n^2)排序算法,发现一个风格检测的OJ----LintCode

来源:互联网 发布:新塘哪里有网络牛仔 编辑:程序博客网 时间:2024/06/03 08:52

LintCode的特色是它可以为你检测代码的风格是否人性化,长得好看。

比如:for,if 后面应该加一个空格,{ 之前也应该有空格,= 等运算符左右应该有空格等等。然后下面是我的简单O(n^2)排序算法:

选择排序:

class Solution {public:    /**     * @param A an integer array     * @return void     */    void sortIntegers(vector<int>& A) {        // Write your code here        int len = A.size();        for (int i = 0; i < len - 1; i++) {            for (int j = i+1; j < len; j++) {                if (A[i] > A[j]) {                    swap(A[i], A[j]);                }            }        }    }};//65ms


冒泡排序:

class Solution {public:    /**     * @param A an integer array     * @return void     */    void sortIntegers(vector<int>& A) {        // Write your code here        int len = A.size();        for (int i = len - 1; i > 0; i--) {            int flag = 1;            for (int j = 0; j < i; j++) {                if (A[j] > A[j + 1]) {                    swap(A[j], A[j + 1]);                    flag = 0;                }            }            if (flag == 1)                break;        }    }};//32ms


插入排序:

class Solution {public:    /**     * @param A an integer array     * @return void     */    void sortIntegers(vector<int>& A) {        // Write your code here        int len = A.size();        for (int i = 0; i < len; i++) {            for (int j = 0; j < i; j++) {                if (A[j] > A[i]) {                    for (int k = i; k > j; k--) {                        swap(A[k], A[k-1]);                    }                }            }        }    }};//35ms

快排:

class Solution {public:    /**     * @param A an integer array     * @return void     */    int partition(vector<int>& A, int left, int right) {        int x = A[right];        int i = left - 1;        for (int j = left; j < right; j++) {            if (A[j] < x) {                i++;                swap(A[i], A[j]);            }        }        swap(A[i + 1], A[right]);        return i + 1;    }    void quick_sort(vector<int>& A, int left, int right) {        if (left < right) {            int q = partition(A, left, right);            quick_sort(A, left, q - 1);            quick_sort(A, q + 1, right);        }    }    void sortIntegers(vector<int>& A) {        // Write your code here        int len = A.size();        int left = 0;        int right = len - 1;        quick_sort(A, left, right);    }};//15ms


发现冒泡和插入排序时间稍微短一点,快排最好。



0 0
原创粉丝点击