package com.file;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
class Solution{
private FileInputStream fin;
private FileOutputStream fout;
private byte data[];
public boolean openFile() throws IOException {
fin=new FileInputStream("F:\tdm-gcc.zip");
fout=new FileOutputStream("F:\1.zip");
data=new byte[1024];
while(fin.read(data)!=-1) {
fout.write(data);
data=new byte[1024];
}
fin.close();
fout.close();
return true;
}
}
------------------------------------自定义比较函数----------------------------------------------------------------------
class student implements Comparable<student>{
private String name;
private int age;
public student(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int compareTo(student o) {
if(this.age < o.age) return 1;
if(this.age > o.age) return -1;
return 0;
}
@Override
public String toString() {
return "name: "+this.name+","+"age: "+this.age;
}
}
class SortStudent{
public boolean Sort() {
student stu=new student("***",14);
student stu1=new student("(((",16);
student stu2=new student(")))",12);
student[]arr= {stu,stu1,stu2};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
return true;
}
}
public class Main {
public static void main(String[] args) throws IOException {
SortStudent ss=new SortStudent();
ss.Sort();
}
}
-----------------------------------以一个结构体作为节点的优先队列--------------------------------------------------------------------------------
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <queue>
#include <functional>
using namespace std;
class student{
private:
string name;
int age;
public:
bool operator<(const student& obj)const{
return this->age > obj.age;
}
student(string name, int age){
this->name = name;
this->age = age;
}
string GetName(){
return this->name;
}
};
int main(){
student s1("****",12);
student s2("(((", 15);
student s3(")))", 14);
priority_queue<student>pq;
pq.push(s1);
pq.push(s2);
pq.push(s3);
cout << pq.top().GetName() << endl;
pq.pop();
cout << pq.top().GetName() << endl;
pq.pop();
cout << pq.top().GetName() << endl;
pq.pop();
cin.get();
}
//---------------------------------补充一点在类外的比较函数的定义-------------------------------------------
#include <iostream>
#include <queue>
#include <functional>
#include <vector>
using namespace std;
struct cmp
{
bool operator()(vector<int>a,vector<int>b)
{
if(a[0]>b[0])return true; //大于则交换------>小顶堆
else if(a[0]==b[0])return a[1]>b[1];
}
};
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
priority_queue<vector<int>,vector<vector<int>>,cmp>queue;
for(int i=0;i<intervals.size();++i)
{
queue.push(intervals[i]);
}
for(int i=0;i<intervals.size();++i)
{
vector<int>temp=queue.top();
cout<<temp[0]<<":"<<temp[1]<<endl;
queue.pop();
}
return intervals;
}
};
int main()
{
Solution space;
vector<vector<int>>intervals;
vector<int>a;
vector<int>b;
a.push_back(5);
a.push_back(7);
b.push_back(2);
b.push_back(3);
intervals.push_back(a);
intervals.push_back(b);
space.merge(intervals);
cout<<"sss"<<endl;
return 0;
}