C++ sort與qsort的比較

qsort:快速排序

sort:快速排序的優化版

而且qsort的比較函數的參數需要轉換類型,並且用'-'進行比較,所以一般用sort

代碼:

#include <iostream>
#include <algorithm>       //sort頭文件
#include <stdlib.h>        //qsort頭文件
using namespace std;

struct Node{
    int x;
    int y;
    bool operator <(const Node& a) const{
        return x < a.x;                     //從小到大
        //return x < a.x;                   //從大到小
    }
};

int cmp(const void* a, const void* b) {
    Node* a1 = (Node*)a;
    Node* b1 = (Node*)b;
    return a1 -> x - b1 -> x;    //從小到大
    //return b1 -> x - a1 -> x;      //從大到小
}
struct array{
    Node* node;
};

int main() {
    array* arr = new array;
    arr->node = new Node[2];
    arr -> node[0].x = 1;
    arr -> node[1].x = 2;
    arr -> node[2].x = 3;
    arr -> node[3].x = 4;
    //sort(arr -> node,arr -> node + 4);
    qsort(arr -> node, 4, sizeof(arr -> node[0]), cmp);
    for(int i = 0; i < 4; i++)
        cout<<arr -> node[i].x<<ends;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章