《1》冒泡排序
对于冒泡排序,重要的就是冒泡两字了。
那么,如何实现冒泡呢?
使用双重for循环就行!
重点就是如何控制for循环里买你的条件。
试想一下,如果对3个数进行排序,比如 2 5 1,是不是只需要比较两次就能排好顺序了。
2<5 5>1 两次比较后借用变量temp将两者交换,那么剩余那个数字是不是自动就拍好位置了。
而拍好前面的顺序后就不要再考虑了,因此从小的往后继续比较,然后交换。
所有代码如下:
#include<iostream>
using namespace std;
int main () {
int a[100];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
《2》sort 函数进行排序
相比较于冒泡排序,sort函数就显得很简单粗暴。
sort函数能将数组内的元素自动进行排序。
#include<iostream>
#include<algorithm>
using namespace std;
int main () {
int a[100];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
需要注意的是,sort(a,a+n)()内的左边的就是你想要进行排序的第一个元素,对应的,后面的就是最后一个(我是这样理解的,如果想了解详细的sort去搜一下)
另外,值得一说的是,sort函数是可以自定义的,什么意思呢?
就是现在上面的函数是按照从小到大来进行排序的,如果你想要得到从大到小,就需要设置一个bool变量改变你想要的顺序。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main () {
int a[100];
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;
}
这个就是从大到小来进行排序。
需要注意的是原本的sort(a,a+n);变成了sort(a,a+n,cmp);
还有就是,别忘了加头文件#include<algorithm> 不然会报错哦