94 lines
3.0 KiB
C++
94 lines
3.0 KiB
C++
// sort algorithm example
|
|
#include <iostream> // std::cout
|
|
#include <algorithm> // std::sort
|
|
#include <vector> // std::vector
|
|
#include <cstring> // memcpy
|
|
|
|
bool myfunction (int i,int j) { return (i<j); }//升序排列
|
|
bool myfunction2 (int i,int j) { return (i>j); }//降序排列
|
|
|
|
struct myclass {
|
|
bool operator() (int i,int j) { return (i>j);}
|
|
} myobject;
|
|
|
|
void printfVector(std::vector<int> myvector)
|
|
{
|
|
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)//输出
|
|
std::cout << ' ' << *it;
|
|
std::cout << '\n';
|
|
}
|
|
|
|
int main () {
|
|
int myints[8] = {32,71,12,45,26,80,53,33};
|
|
int sort[8];
|
|
std::vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::vector<int> vector_sort (sort, sort+8);
|
|
|
|
std::cout << "测试数组:";
|
|
printfVector(myvector);
|
|
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::cout << "默认排序前四个元素(<):";
|
|
printfVector(myvector);
|
|
std::sort (vector_sort.begin(), vector_sort.begin()+4); //(12 32 45 71)26 80 53 33
|
|
std::cout << "排序结果:";
|
|
printfVector(myvector);
|
|
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::cout << "默认排序后四个元素(<):";
|
|
printfVector(myvector);
|
|
std::sort (vector_sort.begin()+4, vector_sort.end());
|
|
std::cout << "排序结果:";
|
|
printfVector(myvector);
|
|
|
|
// using default comparison (operator <):
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::cout << "默认比较(<):";
|
|
printfVector(myvector);
|
|
std::sort (vector_sort.begin(), vector_sort.end());
|
|
std::cout << "排序结果:";
|
|
printfVector(myvector);
|
|
|
|
// using function as comp
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::cout << "用fuction进行比较排序 (<):";
|
|
printfVector(myvector);
|
|
std::sort (vector_sort.begin(), vector_sort.end(), myfunction); // 12 32 45 71(26 33 53 80)
|
|
//std::sort (myints,myints+8,myfunction);不用vector的用法
|
|
std::cout << "排序结果:";
|
|
printfVector(myvector);
|
|
|
|
// using function2 as comp
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::cout << "用fuction2进行比较排序 (>):";
|
|
printfVector(myvector);
|
|
std::sort (vector_sort.begin(), vector_sort.end(), myfunction2);
|
|
//std::sort (myints,myints+8,myfunction);不用vector的用法
|
|
std::cout << "排序结果:";
|
|
printfVector(myvector);
|
|
|
|
// using object as comp
|
|
memcpy(sort, myints, sizeof(myints));
|
|
std::cout << "用object进行比较排序 (>):";
|
|
printfVector(myvector);
|
|
std::sort (vector_sort.begin(), vector_sort.end(), myobject); //(12 26 32 33 45 53 71 80)
|
|
// print out content:
|
|
std::cout << "排序结果:";
|
|
printfVector(myvector);
|
|
|
|
std::cout << "不用vector的用法:";
|
|
printfVector(myvector);
|
|
memcpy(sort, myints, sizeof(myints));
|
|
// std::sort (myvector.begin(), myvector.end(), myfunction);
|
|
std::sort (myints,myints+8,myfunction); //不用vector的用法
|
|
std::cout << "排序结果:";
|
|
// printfVector(myvector);
|
|
for(int i=0;i<9;i++)
|
|
{
|
|
std::cout << ' ' << myints[i];
|
|
}
|
|
std::cout << '\n';
|
|
|
|
return 0;
|
|
} |