0%

Sort Tutorials

C++ sort tutorials

● C++
● #include <algorithm>
● using namespace std;
● sort(sort_start, sort_end, compare_function);
● sort_start:排序範圍開頭記憶體位址,通常直接用陣列名稱
● Sort_end:排序範圍結尾記憶體位址,此位址不參與排序

compare_function

如何排大小的規則函式。若是排序內容是預設基本型態,此參數不輸入會由小排到大,其他需求都要指定此參數。

compare_function規定:bool [functino_name]([type] [left_name], [type] [right_name])

例如要排整數的話可以使用bool fn(int a, int b)
回傳值為false時會交換兩個數值再陣列中的位置

int sort

將int型態的陣列[0]~[N-1],從小排到大的範例

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int N = 30;
int num[100];
sort(num, num+N);
return 0;
}

double sort

將double型態的陣列[0]~[N-1],從大排到小的範例

#include<iostream>
#include<algorithm>
using namespace std;
bool sort_dec(double a, double b)
{
return a > b;
}
int main()
{
int N = 30;
double num[100];
sort(num, num + N, sort_dec);
return 0;
}

struct sort

將P型態的陣列[0]~[49],照xyz的順序從小排到大的範例

#include<iostream>
#include<algorithm>
using namespace std;
struct P
{
int x;
double y;
char z
};
bool sort_P1(P a, P b)
{
if(a.x == b.x)
{
if(a.y == b.y)
{
return a.z < b.z;
}
return a.y < b.y;
}
return a.x > b.y;
}
int main()
{
P p[100];
sort(p, p + 50, sort_P1);
return 0;
}

將P型態的陣列[10]~[59],照yzx的順序排序,y從大到小、z從小到大、x從大到小的範例

#include<iostream>
#include<algorithm>
using namespace std;
struct P
{
int x;
double y;
char z
};
bool sort_P2(P a, P b)
{
if(a.y == b.y)
{
if(a.z == b.z)
{
return a.x < b.x;
}
return a.z < b.z;
}
return a.y > b.y;
}
int main()
{
P p[100];
sort(p+10, p + 60, sort_P2);
return 0;
}