第十讲笔记
第17讲
1.结构体
关键字:
struct
用法:
struct 结构体{
执行内容;
}定义数组;
经典代码:
#include<iostream>
using namespace std;
struct student{
string s;
int age;
double height;
}s1[101];
int main(){
//student s1;
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>s1[i].s>>s1[i].age>>s1[i].height;
}
cout<<"--------------------------------------------------"<<endl;
for(int i=0;i<n;i++){
cout<<s1[i].s<<" "<<s1[i].age<<" "<<s1[i].height<<endl;
}
return 0;
}
声明:
1. 直接声明
2. 在定义结构体的声明
赋值
直接赋值
2.sort语句
头文件:
#include<algorithm>
格式:
//sort(begin,end,cmp);
//begin=数组中要排序的起始位置
//end=数组要排序的结束位置
//cmp=自定义的排序顺序规则,不写默认升序
包含起始,不包含结束!
经典代码:
升序:
方法1:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[1001]={};
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
方法2:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[1001]={};
cin>>n;
for(int i=0;i<=n;i++){
cin>>a[i];
}
sort(a+0,a+0+n);
for(int i=0;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
降序:
方法1:
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y){
return x>y;
}
int main(){
int a[1001]={};
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
方法2:
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y){
return x>y;
}
int main(){
int a[1001]={};
int n;
cin>>n;
for(int i=1;i<n;i++){
cin>>a[i];
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
第18讲
1.桶排序
好处
可排序,可去重
坏处
一定要遍历
2.冒泡排序
经典代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[1001]={};
int n;
cin>>n;
for(int i=1;i<=n-1;i++){
cin>>a[i];
}
//冒泡排序
for(int i=1;i<=n-1;i++){
for(int j=1;j<=n-1;j++){
if(a[j]<a[j+1]){
swap(a[j],a[j+1]);
}
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
冒泡核心代码:
for(int i=1;i<=n-1;i++){
bool flag=true;
for(int j=1;j<=n-i;j++){
if(a[j]<a[j+1]){
swap(a[j],a[j+1]);
}